Delivered-To: kc.smtp.test@gmail.com
Received: by 10.205.40.201 with SMTP id tr9csp14047bkb;
        Sun, 30 Sep 2012 12:27:51 -0700 (PDT)
Return-Path: <katarzyna.ciechanska@gmail.com>
Received-SPF: pass (google.com: domain of katarzyna.ciechanska@gmail.com designates 10.50.76.233 as permitted sender) client-ip=10.50.76.233
Authentication-Results: mr.google.com; spf=pass (google.com: domain of katarzyna.ciechanska@gmail.com designates 10.50.76.233 as permitted sender) smtp.mail=katarzyna.ciechanska@gmail.com; dkim=pass header.i=katarzyna.ciechanska@gmail.com
Received: from mr.google.com ([10.50.76.233])
        by 10.50.76.233 with SMTP id n9mr3778500igw.58.1349033270850 (num_hops = 1);
        Sun, 30 Sep 2012 12:27:50 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20120113;
        h=mime-version:date:message-id:subject:from:to:content-type;
        bh=isXiKoEpr7Td9uyM4Z+wD7IEA6z9fOmt6w4Brbt460o=;
        b=CzkvHcLv68ANLgVFx6hS9IN/QI5FoNtCp2EZj8LZ5ZROCUjyQhOaO/POEotIlNBJ3l
         i9jfE0wOYOF9LjDlKgrEGr1LJ0n0Ar4Y2IJpeysJgRk38IEoAtygW71gBzUe7kgyPvT2
         NTQPZc7idvv0pHeWpV9N0jMHjp2gYdHeSlka4wKhoWhR7mYfaTxCihyEm5VydSQ2+Zk1
         3PwIzsZdAr84wl1O/QBtMemeMSzHSQ1P2lXBlydPAlewtWELXqNXFSOOiZdIMeiSML7T
         JO8jAHDvq/EzFuwcww3TW1MDqn7yawIa6URNnTxiyaPu7YcPiH292UtW1N7fFyYrlS5T
         IqPQ==
MIME-Version: 1.0
Received: by 10.50.76.233 with SMTP id n9mr3778500igw.58.1349033270831; Sun,
 30 Sep 2012 12:27:50 -0700 (PDT)
Received: by 10.64.91.164 with HTTP; Sun, 30 Sep 2012 12:27:50 -0700 (PDT)
Date: Sun, 30 Sep 2012 21:27:50 +0200
Message-ID: <CA+QyGZCt9OwB=3XwqRdz-LxtkG+RDLo1u4mP1TSXvKr2UcTnRg@mail.gmail.com>
Subject: Test
From: =?ISO-8859-2?Q?Katarzyna_Ciecha=F1ska?= <katarzyna.ciechanska@gmail.com>
To: kc.smtp.test@gmail.com
Content-Type: multipart/mixed; boundary=e89a8f23596fe5eb2704caf04802

--e89a8f23596fe5eb2704caf04802
Content-Type: multipart/alternative; boundary=e89a8f23596fe5eb1b04caf04800

--e89a8f23596fe5eb1b04caf04800
Content-Type: text/plain; charset=ISO-8859-1



--e89a8f23596fe5eb1b04caf04800
Content-Type: text/html; charset=ISO-8859-1

<br>

--e89a8f23596fe5eb1b04caf04800--
--e89a8f23596fe5eb2704caf04802
Content-Type: text/x-chdr; charset=US-ASCII; name="a.out.h"
Content-Disposition: attachment; filename="a.out.h"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7qjidec0

I2lmbmRlZiBfX0FfT1VUX0dOVV9IX18KI2RlZmluZSBfX0FfT1VUX0dOVV9IX18KCiNpbmNsdWRl
IDxiaXRzL2Eub3V0Lmg+CgojZGVmaW5lIF9fR05VX0VYRUNfTUFDUk9TX18KCnN0cnVjdCBleGVj
CnsKICB1bnNpZ25lZCBsb25nIGFfaW5mbzsJLyogVXNlIG1hY3JvcyBOX01BR0lDLCBldGMgZm9y
IGFjY2Vzcy4gICovCiAgdW5zaWduZWQgaW50IGFfdGV4dDsJLyogTGVuZ3RoIG9mIHRleHQsIGlu
IGJ5dGVzLiAgKi8KICB1bnNpZ25lZCBpbnQgYV9kYXRhOwkvKiBMZW5ndGggb2YgZGF0YSwgaW4g
Ynl0ZXMuICAqLwogIHVuc2lnbmVkIGludCBhX2JzczsJLyogTGVuZ3RoIG9mIHVuaW5pdGlhbGl6
ZWQgZGF0YSBhcmVhIGZvciBmaWxlLCBpbiBieXRlcy4gICovCiAgdW5zaWduZWQgaW50IGFfc3lt
czsJLyogTGVuZ3RoIG9mIHN5bWJvbCB0YWJsZSBkYXRhIGluIGZpbGUsIGluIGJ5dGVzLiAgKi8K
ICB1bnNpZ25lZCBpbnQgYV9lbnRyeTsJLyogU3RhcnQgYWRkcmVzcy4gICovCiAgdW5zaWduZWQg
aW50IGFfdHJzaXplOy8qIExlbmd0aCBvZiByZWxvY2F0aW9uIGluZm8gZm9yIHRleHQsIGluIGJ5
dGVzLiAgKi8KICB1bnNpZ25lZCBpbnQgYV9kcnNpemU7LyogTGVuZ3RoIG9mIHJlbG9jYXRpb24g
aW5mbyBmb3IgZGF0YSwgaW4gYnl0ZXMuICAqLwp9OwoKZW51bSBtYWNoaW5lX3R5cGUKewogIE1f
T0xEU1VOMiA9IDAsCiAgTV82ODAxMCA9IDEsCiAgTV82ODAyMCA9IDIsCiAgTV9TUEFSQyA9IDMs
CiAgTV8zODYgPSAxMDAsCiAgTV9NSVBTMSA9IDE1MSwKICBNX01JUFMyID0gMTUyCn07CgojZGVm
aW5lIE5fTUFHSUMoZXhlYykJKChleGVjKS5hX2luZm8gJiAweGZmZmYpCiNkZWZpbmUgTl9NQUNI
VFlQRShleGVjKSAoKGVudW0gbWFjaGluZV90eXBlKSgoKGV4ZWMpLmFfaW5mbyA+PiAxNikgJiAw
eGZmKSkKI2RlZmluZSBOX0ZMQUdTKGV4ZWMpCSgoKGV4ZWMpLmFfaW5mbyA+PiAyNCkgJiAweGZm
KQojZGVmaW5lIE5fU0VUX0lORk8oZXhlYywgbWFnaWMsIHR5cGUsIGZsYWdzKSBcCiAgKChleGVj
KS5hX2luZm8gPSAoKG1hZ2ljKSAmIDB4ZmZmZikJCQkJCVwKICAgfCAoKChpbnQpKHR5cGUpICYg
MHhmZikgPDwgMTYpCQkJCQlcCiAgIHwgKCgoZmxhZ3MpICYgMHhmZikgPDwgMjQpKQojZGVmaW5l
IE5fU0VUX01BR0lDKGV4ZWMsIG1hZ2ljKSBcCiAgKChleGVjKS5hX2luZm8gPSAoKGV4ZWMpLmFf
aW5mbyAmIDB4ZmZmZjAwMDApIHwgKChtYWdpYykgJiAweGZmZmYpKQojZGVmaW5lIE5fU0VUX01B
Q0hUWVBFKGV4ZWMsIG1hY2h0eXBlKSBcCiAgKChleGVjKS5hX2luZm8gPQkJCQkJCQlcCiAgICgo
ZXhlYykuYV9pbmZvJjB4ZmYwMGZmZmYpIHwgKCgoKGludCkobWFjaHR5cGUpKSYweGZmKSA8PCAx
NikpCiNkZWZpbmUgTl9TRVRfRkxBR1MoZXhlYywgZmxhZ3MpIFwKICAoKGV4ZWMpLmFfaW5mbyA9
CQkJCQkJCVwKICAgKChleGVjKS5hX2luZm8mMHgwMGZmZmZmZikgfCAoKChmbGFncykgJiAweGZm
KSA8PCAyNCkpCgovKiBDb2RlIGluZGljYXRpbmcgb2JqZWN0IGZpbGUgb3IgaW1wdXJlIGV4ZWN1
dGFibGUuICAqLwojZGVmaW5lIE9NQUdJQyAwNDA3Ci8qIENvZGUgaW5kaWNhdGluZyBwdXJlIGV4
ZWN1dGFibGUuICAqLwojZGVmaW5lIE5NQUdJQyAwNDEwCi8qIENvZGUgaW5kaWNhdGluZyBkZW1h
bmQtcGFnZWQgZXhlY3V0YWJsZS4gICovCiNkZWZpbmUgWk1BR0lDIDA0MTMKLyogVGhpcyBpbmRp
Y2F0ZXMgYSBkZW1hbmQtcGFnZWQgZXhlY3V0YWJsZSB3aXRoIHRoZSBoZWFkZXIgaW4gdGhlIHRl
eHQuIAogICBUaGUgZmlyc3QgcGFnZSBpcyB1bm1hcHBlZCB0byBoZWxwIHRyYXAgTlVMTCBwb2lu
dGVyIHJlZmVyZW5jZXMuICAqLwojZGVmaW5lIFFNQUdJQyAwMzE0Ci8qIENvZGUgaW5kaWNhdGlu
ZyBjb3JlIGZpbGUuICAqLwojZGVmaW5lIENNQUdJQyAwNDIxCgojZGVmaW5lIE5fVFJTSVpFKGEp
CSgoYSkuYV90cnNpemUpCiNkZWZpbmUgTl9EUlNJWkUoYSkJKChhKS5hX2Ryc2l6ZSkKI2RlZmlu
ZSBOX1NZTVNJWkUoYSkJKChhKS5hX3N5bXMpCiNkZWZpbmUgTl9CQURNQUcoeCkgXAogIChOX01B
R0lDKHgpICE9IE9NQUdJQwkmJiBOX01BR0lDKHgpICE9IE5NQUdJQwkJCQlcCiAgICYmIE5fTUFH
SUMoeCkgIT0gWk1BR0lDICYmIE5fTUFHSUMoeCkgIT0gUU1BR0lDKQojZGVmaW5lIF9OX0hEUk9G
Rih4KQkoMTAyNCAtIHNpemVvZiAoc3RydWN0IGV4ZWMpKQojZGVmaW5lIE5fVFhUT0ZGKHgpIFwK
ICAoTl9NQUdJQyh4KSA9PSBaTUFHSUMgPyBfTl9IRFJPRkYoKHgpKSArIHNpemVvZiAoc3RydWN0
IGV4ZWMpIDoJXAogICAoTl9NQUdJQyh4KSA9PSBRTUFHSUMgPyAwIDogc2l6ZW9mIChzdHJ1Y3Qg
ZXhlYykpKQojZGVmaW5lIE5fREFUT0ZGKHgpCShOX1RYVE9GRih4KSArICh4KS5hX3RleHQpCiNk
ZWZpbmUgTl9UUkVMT0ZGKHgpCShOX0RBVE9GRih4KSArICh4KS5hX2RhdGEpCiNkZWZpbmUgTl9E
UkVMT0ZGKHgpCShOX1RSRUxPRkYoeCkgKyBOX1RSU0laRSh4KSkKI2RlZmluZSBOX1NZTU9GRih4
KQkoTl9EUkVMT0ZGKHgpICsgTl9EUlNJWkUoeCkpCiNkZWZpbmUgTl9TVFJPRkYoeCkJKE5fU1lN
T0ZGKHgpICsgTl9TWU1TSVpFKHgpKQoKLyogQWRkcmVzcyBvZiB0ZXh0IHNlZ21lbnQgaW4gbWVt
b3J5IGFmdGVyIGl0IGlzIGxvYWRlZC4gICovCiNkZWZpbmUgTl9UWFRBRERSKHgpCShOX01BR0lD
KHgpID09IFFNQUdJQyA/IDQwOTYgOiAwKQoKLyogQWRkcmVzcyBvZiBkYXRhIHNlZ21lbnQgaW4g
bWVtb3J5IGFmdGVyIGl0IGlzIGxvYWRlZC4gICovCiNkZWZpbmUgU0VHTUVOVF9TSVpFCTEwMjQK
CiNkZWZpbmUgX05fU0VHTUVOVF9ST1VORCh4KSAoKCh4KSArIFNFR01FTlRfU0laRSAtIDEpICYg
fihTRUdNRU5UX1NJWkUgLSAxKSkKI2RlZmluZSBfTl9UWFRFTkRBRERSKHgpIChOX1RYVEFERFIo
eCkrKHgpLmFfdGV4dCkKCiNkZWZpbmUgTl9EQVRBRERSKHgpIFwKICAoTl9NQUdJQyh4KT09T01B
R0lDPyAoX05fVFhURU5EQUREUih4KSkJCQkJXAogICA6IChfTl9TRUdNRU5UX1JPVU5EIChfTl9U
WFRFTkRBRERSKHgpKSkpCiNkZWZpbmUgTl9CU1NBRERSKHgpIChOX0RBVEFERFIoeCkgKyAoeCku
YV9kYXRhKQoKI2lmICFkZWZpbmVkIChOX05MSVNUX0RFQ0xBUkVEKQpzdHJ1Y3Qgbmxpc3QKewog
IHVuaW9uCiAgICB7CiAgICAgIGNoYXIgKm5fbmFtZTsKICAgICAgc3RydWN0IG5saXN0ICpuX25l
eHQ7CiAgICAgIGxvbmcgbl9zdHJ4OwogICAgfSBuX3VuOwogIHVuc2lnbmVkIGNoYXIgbl90eXBl
OwogIGNoYXIgbl9vdGhlcjsKICBzaG9ydCBuX2Rlc2M7CiAgdW5zaWduZWQgbG9uZyBuX3ZhbHVl
Owp9OwojZW5kaWYgLyogbm8gTl9OTElTVF9ERUNMQVJFRC4gICovCgojZGVmaW5lIE5fVU5ERgkw
CiNkZWZpbmUgTl9BQlMJMgojZGVmaW5lIE5fVEVYVAk0CiNkZWZpbmUgTl9EQVRBCTYKI2RlZmlu
ZSBOX0JTUwk4CiNkZWZpbmUgTl9GTgkxNQojZGVmaW5lIE5fRVhUCTEKI2RlZmluZSBOX1RZUEUJ
MDM2CiNkZWZpbmUgTl9TVEFCCTAzNDAKI2RlZmluZSBOX0lORFIJMHhhCiNkZWZpbmUJTl9TRVRB
CTB4MTQJLyogQWJzb2x1dGUgc2V0IGVsZW1lbnQgc3ltYm9sLiAgKi8KI2RlZmluZQlOX1NFVFQJ
MHgxNgkvKiBUZXh0IHNldCBlbGVtZW50IHN5bWJvbC4gICovCiNkZWZpbmUJTl9TRVRECTB4MTgJ
LyogRGF0YSBzZXQgZWxlbWVudCBzeW1ib2wuICAqLwojZGVmaW5lCU5fU0VUQgkweDFBCS8qIEJz
cyBzZXQgZWxlbWVudCBzeW1ib2wuICAqLwojZGVmaW5lIE5fU0VUVgkweDFDCS8qIFBvaW50ZXIg
dG8gc2V0IHZlY3RvciBpbiBkYXRhIGFyZWEuICAqLwoKI2lmICFkZWZpbmVkIChOX1JFTE9DQVRJ
T05fSU5GT19ERUNMQVJFRCkKLyogVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGEgc2luZ2xlIHJl
bG9jYXRpb24gdG8gYmUgcGVyZm9ybWVkLgogICBUaGUgdGV4dC1yZWxvY2F0aW9uIHNlY3Rpb24g
b2YgdGhlIGZpbGUgaXMgYSB2ZWN0b3Igb2YgdGhlc2Ugc3RydWN0dXJlcywKICAgYWxsIG9mIHdo
aWNoIGFwcGx5IHRvIHRoZSB0ZXh0IHNlY3Rpb24uCiAgIExpa2V3aXNlLCB0aGUgZGF0YS1yZWxv
Y2F0aW9uIHNlY3Rpb24gYXBwbGllcyB0byB0aGUgZGF0YSBzZWN0aW9uLiAgKi8KCnN0cnVjdCBy
ZWxvY2F0aW9uX2luZm8KewogIGludCByX2FkZHJlc3M7CiAgdW5zaWduZWQgaW50IHJfc3ltYm9s
bnVtOjI0OwogIHVuc2lnbmVkIGludCByX3BjcmVsOjE7CiAgdW5zaWduZWQgaW50IHJfbGVuZ3Ro
OjI7CiAgdW5zaWduZWQgaW50IHJfZXh0ZXJuOjE7CiAgdW5zaWduZWQgaW50IHJfcGFkOjQ7Cn07
CiNlbmRpZiAvKiBubyBOX1JFTE9DQVRJT05fSU5GT19ERUNMQVJFRC4gICovCgojZW5kaWYgLyog
X19BX09VVF9HTlVfSF9fICovCg==
--e89a8f23596fe5eb2704caf04802
Content-Type: text/x-chdr; charset=US-ASCII; name="aio.h"
Content-Disposition: attachment; filename="aio.h"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7qjideg1

LyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsMjAwMywyMDA0LDIwMDcgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuCiAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5
LgoKICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgVGhlIEdOVSBDIExp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KCiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUg
QyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCiAgIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCiAgIDAyMTEx
LTEzMDcgVVNBLiAgKi8KCi8qCiAqIElTTy9JRUMgOTk0NS0xOjE5OTYgNi43OiBBc3luY2hyb25v
dXMgSW5wdXQgYW5kIE91dHB1dAogKi8KCiNpZm5kZWYgX0FJT19ICiNkZWZpbmUgX0FJT19ICTEK
CiNpbmNsdWRlIDxmZWF0dXJlcy5oPgojaW5jbHVkZSA8ZmNudGwuaD4KI2luY2x1ZGUgPHNpZ25h
bC5oPgojaW5jbHVkZSA8dGltZS5oPgojaW5jbHVkZSA8c3lzL3R5cGVzLmg+CgpfX0JFR0lOX0RF
Q0xTCgovKiBBc3luY2hyb25vdXMgSS9PIGNvbnRyb2wgYmxvY2suICAqLwpzdHJ1Y3QgYWlvY2IK
ewogIGludCBhaW9fZmlsZGVzOwkJLyogRmlsZSBkZXNyaXB0b3IuICAqLwogIGludCBhaW9fbGlv
X29wY29kZTsJCS8qIE9wZXJhdGlvbiB0byBiZSBwZXJmb3JtZWQuICAqLwogIGludCBhaW9fcmVx
cHJpbzsJCS8qIFJlcXVlc3QgcHJpb3JpdHkgb2Zmc2V0LiAgKi8KICB2b2xhdGlsZSB2b2lkICph
aW9fYnVmOwkvKiBMb2NhdGlvbiBvZiBidWZmZXIuICAqLwogIHNpemVfdCBhaW9fbmJ5dGVzOwkJ
LyogTGVuZ3RoIG9mIHRyYW5zZmVyLiAgKi8KICBzdHJ1Y3Qgc2lnZXZlbnQgYWlvX3NpZ2V2ZW50
OwkvKiBTaWduYWwgbnVtYmVyIGFuZCB2YWx1ZS4gICovCgogIC8qIEludGVybmFsIG1lbWJlcnMu
ICAqLwogIHN0cnVjdCBhaW9jYiAqX19uZXh0X3ByaW87CiAgaW50IF9fYWJzX3ByaW87CiAgaW50
IF9fcG9saWN5OwogIGludCBfX2Vycm9yX2NvZGU7CiAgX19zc2l6ZV90IF9fcmV0dXJuX3ZhbHVl
OwoKI2lmbmRlZiBfX1VTRV9GSUxFX09GRlNFVDY0CiAgX19vZmZfdCBhaW9fb2Zmc2V0OwkJLyog
RmlsZSBvZmZzZXQuICAqLwogIGNoYXIgX19wYWRbc2l6ZW9mIChfX29mZjY0X3QpIC0gc2l6ZW9m
IChfX29mZl90KV07CiNlbHNlCiAgX19vZmY2NF90IGFpb19vZmZzZXQ7CQkvKiBGaWxlIG9mZnNl
dC4gICovCiNlbmRpZgogIGNoYXIgX191bnVzZWRbMzJdOwp9OwoKLyogVGhlIHNhbWUgZm9yIHRo
ZSA2NGJpdCBvZmZzZXRzLiAgUGxlYXNlIG5vdGUgdGhhdCB0aGUgbWVtYmVycyBhaW9fZmlsZGVz
CiAgIHRvIF9fcmV0dXJuX3ZhbHVlIGhhdmUgdG8gYmUgdGhlIHNhbWUgaW4gYWlvY2IgYW5kIGFp
b2NiNjQuICAqLwojaWZkZWYgX19VU0VfTEFSR0VGSUxFNjQKc3RydWN0IGFpb2NiNjQKewogIGlu
dCBhaW9fZmlsZGVzOwkJLyogRmlsZSBkZXNyaXB0b3IuICAqLwogIGludCBhaW9fbGlvX29wY29k
ZTsJCS8qIE9wZXJhdGlvbiB0byBiZSBwZXJmb3JtZWQuICAqLwogIGludCBhaW9fcmVxcHJpbzsJ
CS8qIFJlcXVlc3QgcHJpb3JpdHkgb2Zmc2V0LiAgKi8KICB2b2xhdGlsZSB2b2lkICphaW9fYnVm
OwkvKiBMb2NhdGlvbiBvZiBidWZmZXIuICAqLwogIHNpemVfdCBhaW9fbmJ5dGVzOwkJLyogTGVu
Z3RoIG9mIHRyYW5zZmVyLiAgKi8KICBzdHJ1Y3Qgc2lnZXZlbnQgYWlvX3NpZ2V2ZW50OwkvKiBT
aWduYWwgbnVtYmVyIGFuZCB2YWx1ZS4gICovCgogIC8qIEludGVybmFsIG1lbWJlcnMuICAqLwog
IHN0cnVjdCBhaW9jYiAqX19uZXh0X3ByaW87CiAgaW50IF9fYWJzX3ByaW87CiAgaW50IF9fcG9s
aWN5OwogIGludCBfX2Vycm9yX2NvZGU7CiAgX19zc2l6ZV90IF9fcmV0dXJuX3ZhbHVlOwoKICBf
X29mZjY0X3QgYWlvX29mZnNldDsJCS8qIEZpbGUgb2Zmc2V0LiAgKi8KICBjaGFyIF9fdW51c2Vk
WzMyXTsKfTsKI2VuZGlmCgoKI2lmZGVmIF9fVVNFX0dOVQovKiBUbyBjdXN0b21pemUgdGhlIGlt
cGxlbWVudGF0aW9uIG9uZSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgc3RydWN0LgogICBUaGlzIGlt
cGxlbWVudGF0aW9uIGZvbGxvd3MgdGhlIG9uZSBpbiBJcml4LiAgKi8Kc3RydWN0IGFpb2luaXQK
ICB7CiAgICBpbnQgYWlvX3RocmVhZHM7CQkvKiBNYXhpbWFsIG51bWJlciBvZiB0aHJlYWRzLiAg
Ki8KICAgIGludCBhaW9fbnVtOwkJLyogTnVtYmVyIG9mIGV4cGVjdGVkIHNpbXVsdGFuaW91cyBy
ZXF1ZXN0cy4gKi8KICAgIGludCBhaW9fbG9ja3M7CQkvKiBOb3QgdXNlZC4gICovCiAgICBpbnQg
YWlvX3VzZWRiYTsJCS8qIE5vdCB1c2VkLiAgKi8KICAgIGludCBhaW9fZGVidWc7CQkvKiBOb3Qg
dXNlZC4gICovCiAgICBpbnQgYWlvX251bXVzZXJzOwkJLyogTm90IHVzZWQuICAqLwogICAgaW50
IGFpb19pZGxlX3RpbWU7CQkvKiBOdW1iZXIgb2Ygc2Vjb25kcyBiZWZvcmUgaWRsZSB0aHJlYWQK
CQkJCSAgIHRlcm1pbmF0ZXMuICAqLwogICAgaW50IGFpb19yZXNlcnZlZDsKICB9OwojZW5kaWYK
CgovKiBSZXR1cm4gdmFsdWVzIG9mIGNhbmNlbGF0aW9uIGZ1bmN0aW9uLiAgKi8KZW51bQp7CiAg
QUlPX0NBTkNFTEVELAojZGVmaW5lIEFJT19DQU5DRUxFRCBBSU9fQ0FOQ0VMRUQKICBBSU9fTk9U
Q0FOQ0VMRUQsCiNkZWZpbmUgQUlPX05PVENBTkNFTEVEIEFJT19OT1RDQU5DRUxFRAogIEFJT19B
TExET05FCiNkZWZpbmUgQUlPX0FMTERPTkUgQUlPX0FMTERPTkUKfTsKCgovKiBPcGVyYXRpb24g
Y29kZXMgZm9yIGBhaW9fbGlvX29wY29kZScuICAqLwplbnVtCnsKICBMSU9fUkVBRCwKI2RlZmlu
ZSBMSU9fUkVBRCBMSU9fUkVBRAogIExJT19XUklURSwKI2RlZmluZSBMSU9fV1JJVEUgTElPX1dS
SVRFCiAgTElPX05PUAojZGVmaW5lIExJT19OT1AgTElPX05PUAp9OwoKCi8qIFN5bmNocm9uaXph
dGlvbiBvcHRpb25zIGZvciBgbGlvX2xpc3RpbycgZnVuY3Rpb24uICAqLwplbnVtCnsKICBMSU9f
V0FJVCwKI2RlZmluZSBMSU9fV0FJVCBMSU9fV0FJVAogIExJT19OT1dBSVQKI2RlZmluZSBMSU9f
Tk9XQUlUIExJT19OT1dBSVQKfTsKCgovKiBBbGxvdyB1c2VyIHRvIHNwZWNpZnkgb3B0aW1pemF0
aW9uLiAgKi8KI2lmZGVmIF9fVVNFX0dOVQpleHRlcm4gdm9pZCBhaW9faW5pdCAoX19jb25zdCBz
dHJ1Y3QgYWlvaW5pdCAqX19pbml0KSBfX1RIUk9XIF9fbm9ubnVsbCAoKDEpKTsKI2VuZGlmCgoK
I2lmbmRlZiBfX1VTRV9GSUxFX09GRlNFVDY0Ci8qIEVucXVldWUgcmVhZCByZXF1ZXN0IGZvciBn
aXZlbiBudW1iZXIgb2YgYnl0ZXMgYW5kIHRoZSBnaXZlbiBwcmlvcml0eS4gICovCmV4dGVybiBp
bnQgYWlvX3JlYWQgKHN0cnVjdCBhaW9jYiAqX19haW9jYnApIF9fVEhST1cgX19ub25udWxsICgo
MSkpOwovKiBFbnF1ZXVlIHdyaXRlIHJlcXVlc3QgZm9yIGdpdmVuIG51bWJlciBvZiBieXRlcyBh
bmQgdGhlIGdpdmVuIHByaW9yaXR5LiAgKi8KZXh0ZXJuIGludCBhaW9fd3JpdGUgKHN0cnVjdCBh
aW9jYiAqX19haW9jYnApIF9fVEhST1cgX19ub25udWxsICgoMSkpOwoKLyogSW5pdGlhdGUgbGlz
dCBvZiBJL08gcmVxdWVzdHMuICAqLwpleHRlcm4gaW50IGxpb19saXN0aW8gKGludCBfX21vZGUs
CgkJICAgICAgIHN0cnVjdCBhaW9jYiAqX19jb25zdCBfX2xpc3RbX19yZXN0cmljdF9hcnJdLAoJ
CSAgICAgICBpbnQgX19uZW50LCBzdHJ1Y3Qgc2lnZXZlbnQgKl9fcmVzdHJpY3QgX19zaWcpCiAg
X19USFJPVyBfX25vbm51bGwgKCgyKSk7CgovKiBSZXRyaWV2ZSBlcnJvciBzdGF0dXMgYXNzb2Np
YXRlZCB3aXRoIEFJT0NCUC4gICovCmV4dGVybiBpbnQgYWlvX2Vycm9yIChfX2NvbnN0IHN0cnVj
dCBhaW9jYiAqX19haW9jYnApIF9fVEhST1cgX19ub25udWxsICgoMSkpOwovKiBSZXR1cm4gc3Rh
dHVzIGFzc29jaWF0ZWQgd2l0aCBBSU9DQlAuICAqLwpleHRlcm4gX19zc2l6ZV90IGFpb19yZXR1
cm4gKHN0cnVjdCBhaW9jYiAqX19haW9jYnApIF9fVEhST1cgX19ub25udWxsICgoMSkpOwoKLyog
VHJ5IHRvIGNhbmNlbCBhc3luY2hyb25vdXMgSS9PIHJlcXVlc3RzIG91dHN0YW5kaW5nIGFnYWlu
c3QgZmlsZQogICBkZXNjcmlwdG9yIEZJTERFUy4gICovCmV4dGVybiBpbnQgYWlvX2NhbmNlbCAo
aW50IF9fZmlsZGVzLCBzdHJ1Y3QgYWlvY2IgKl9fYWlvY2JwKSBfX1RIUk9XOwoKLyogU3VzcGVu
ZCBjYWxsaW5nIHRocmVhZCB1bnRpbCBhdCBsZWFzdCBvbmUgb2YgdGhlIGFzeW5jaHJvbm91cyBJ
L08KICAgb3BlcmF0aW9ucyByZWZlcmVuY2VkIGJ5IExJU1QgaGFzIGNvbXBsZXRlZC4KCiAgIFRo
aXMgZnVuY3Rpb24gaXMgYSBjYW5jZWxsYXRpb24gcG9pbnQgYW5kIHRoZXJlZm9yZSBub3QgbWFy
a2VkIHdpdGgKICAgX19USFJPVy4gICovCmV4dGVybiBpbnQgYWlvX3N1c3BlbmQgKF9fY29uc3Qg
c3RydWN0IGFpb2NiICpfX2NvbnN0IF9fbGlzdFtdLCBpbnQgX19uZW50LAoJCQlfX2NvbnN0IHN0
cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdCBfX3RpbWVvdXQpCiAgX19ub25udWxsICgoMSkpOwoK
LyogRm9yY2UgYWxsIG9wZXJhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGZpbGUgZGVzcmlwdG9yIGRl
c2NyaWJlZCBieQogICBgYWlvX2ZpbGRlcycgbWVtYmVyIG9mIEFJT0NCUC4gICovCmV4dGVybiBp
bnQgYWlvX2ZzeW5jIChpbnQgX19vcGVyYXRpb24sIHN0cnVjdCBhaW9jYiAqX19haW9jYnApCiAg
X19USFJPVyBfX25vbm51bGwgKCgyKSk7CiNlbHNlCiMgaWZkZWYgX19SRURJUkVDVF9OVEgKZXh0
ZXJuIGludCBfX1JFRElSRUNUX05USCAoYWlvX3JlYWQsIChzdHJ1Y3QgYWlvY2IgKl9fYWlvY2Jw
KSwgYWlvX3JlYWQ2NCkKICBfX25vbm51bGwgKCgxKSk7CmV4dGVybiBpbnQgX19SRURJUkVDVF9O
VEggKGFpb193cml0ZSwgKHN0cnVjdCBhaW9jYiAqX19haW9jYnApLCBhaW9fd3JpdGU2NCkKICBf
X25vbm51bGwgKCgxKSk7CgpleHRlcm4gaW50IF9fUkVESVJFQ1RfTlRIIChsaW9fbGlzdGlvLAoJ
CQkgICAoaW50IF9fbW9kZSwKCQkJICAgIHN0cnVjdCBhaW9jYiAqX19jb25zdCBfX2xpc3RbX19y
ZXN0cmljdF9hcnJdLAoJCQkgICAgaW50IF9fbmVudCwgc3RydWN0IHNpZ2V2ZW50ICpfX3Jlc3Ry
aWN0IF9fc2lnKSwKCQkJICAgbGlvX2xpc3RpbzY0KSBfX25vbm51bGwgKCgyKSk7CgpleHRlcm4g
aW50IF9fUkVESVJFQ1RfTlRIIChhaW9fZXJyb3IsIChfX2NvbnN0IHN0cnVjdCBhaW9jYiAqX19h
aW9jYnApLAoJCQkgICBhaW9fZXJyb3I2NCkgX19ub25udWxsICgoMSkpOwpleHRlcm4gX19zc2l6
ZV90IF9fUkVESVJFQ1RfTlRIIChhaW9fcmV0dXJuLCAoc3RydWN0IGFpb2NiICpfX2Fpb2NicCks
CgkJCQkgYWlvX3JldHVybjY0KSBfX25vbm51bGwgKCgxKSk7CgpleHRlcm4gaW50IF9fUkVESVJF
Q1RfTlRIIChhaW9fY2FuY2VsLAoJCQkgICAoaW50IF9fZmlsZGVzLCBzdHJ1Y3QgYWlvY2IgKl9f
YWlvY2JwKSwKCQkJICAgYWlvX2NhbmNlbDY0KTsKCmV4dGVybiBpbnQgX19SRURJUkVDVF9OVEgg
KGFpb19zdXNwZW5kLAoJCQkgICAoX19jb25zdCBzdHJ1Y3QgYWlvY2IgKl9fY29uc3QgX19saXN0
W10sIGludCBfX25lbnQsCgkJCSAgICBfX2NvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmlj
dCBfX3RpbWVvdXQpLAoJCQkgICBhaW9fc3VzcGVuZDY0KSBfX25vbm51bGwgKCgxKSk7CgpleHRl
cm4gaW50IF9fUkVESVJFQ1RfTlRIIChhaW9fZnN5bmMsCgkJCSAgIChpbnQgX19vcGVyYXRpb24s
IHN0cnVjdCBhaW9jYiAqX19haW9jYnApLAoJCQkgICBhaW9fZnN5bmM2NCkgX19ub25udWxsICgo
MikpOwoKIyBlbHNlCiMgIGRlZmluZSBhaW9fcmVhZCBhaW9fcmVhZDY0CiMgIGRlZmluZSBhaW9f
d3JpdGUgYWlvX3dyaXRlNjQKIyAgZGVmaW5lIGxpb19saXN0aW8gbGlvX2xpc3RpbzY0CiMgIGRl
ZmluZSBhaW9fZXJyb3IgYWlvX2Vycm9yNjQKIyAgZGVmaW5lIGFpb19yZXR1cm4gYWlvX3JldHVy
bjY0CiMgIGRlZmluZSBhaW9fY2FuY2VsIGFpb19jYW5jZWw2NAojICBkZWZpbmUgYWlvX3N1c3Bl
bmQgYWlvX3N1c3BlbmQ2NAojICBkZWZpbmUgYWlvX2ZzeW5jIGFpb19mc3luYzY0CiMgZW5kaWYK
I2VuZGlmCgojaWZkZWYgX19VU0VfTEFSR0VGSUxFNjQKZXh0ZXJuIGludCBhaW9fcmVhZDY0IChz
dHJ1Y3QgYWlvY2I2NCAqX19haW9jYnApIF9fVEhST1cgX19ub25udWxsICgoMSkpOwpleHRlcm4g
aW50IGFpb193cml0ZTY0IChzdHJ1Y3QgYWlvY2I2NCAqX19haW9jYnApIF9fVEhST1cgX19ub25u
dWxsICgoMSkpOwoKZXh0ZXJuIGludCBsaW9fbGlzdGlvNjQgKGludCBfX21vZGUsCgkJCSBzdHJ1
Y3QgYWlvY2I2NCAqX19jb25zdCBfX2xpc3RbX19yZXN0cmljdF9hcnJdLAoJCQkgaW50IF9fbmVu
dCwgc3RydWN0IHNpZ2V2ZW50ICpfX3Jlc3RyaWN0IF9fc2lnKQogIF9fVEhST1cgX19ub25udWxs
ICgoMikpOwoKZXh0ZXJuIGludCBhaW9fZXJyb3I2NCAoX19jb25zdCBzdHJ1Y3QgYWlvY2I2NCAq
X19haW9jYnApCiAgX19USFJPVyBfX25vbm51bGwgKCgxKSk7CmV4dGVybiBfX3NzaXplX3QgYWlv
X3JldHVybjY0IChzdHJ1Y3QgYWlvY2I2NCAqX19haW9jYnApCiAgX19USFJPVyBfX25vbm51bGwg
KCgxKSk7CgpleHRlcm4gaW50IGFpb19jYW5jZWw2NCAoaW50IF9fZmlsZGVzLCBzdHJ1Y3QgYWlv
Y2I2NCAqX19haW9jYnApIF9fVEhST1c7CgpleHRlcm4gaW50IGFpb19zdXNwZW5kNjQgKF9fY29u
c3Qgc3RydWN0IGFpb2NiNjQgKl9fY29uc3QgX19saXN0W10sIGludCBfX25lbnQsCgkJCSAgX19j
b25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QgX190aW1lb3V0KQogIF9fVEhST1cgX19u
b25udWxsICgoMSkpOwoKZXh0ZXJuIGludCBhaW9fZnN5bmM2NCAoaW50IF9fb3BlcmF0aW9uLCBz
dHJ1Y3QgYWlvY2I2NCAqX19haW9jYnApCiAgX19USFJPVyBfX25vbm51bGwgKCgyKSk7CiNlbmRp
ZgoKX19FTkRfREVDTFMKCiNlbmRpZiAvKiBhaW8uaCAqLwo=
--e89a8f23596fe5eb2704caf04802
Content-Type: text/x-chdr; charset=US-ASCII; name="aliases.h"
Content-Disposition: attachment; filename="aliases.h"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7qjidej2

LyogQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5IEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLgogICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4K
CiAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAgIFRoZSBHTlUgQyBMaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAg
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCgogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMg
TGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQogICBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQogICAwMjExMS0x
MzA3IFVTQS4gICovCgojaWZuZGVmIF9BTElBU0VTX0gKI2RlZmluZSBfQUxJQVNFU19ICTEKCiNp
bmNsdWRlIDxmZWF0dXJlcy5oPgoKI2luY2x1ZGUgPHN5cy90eXBlcy5oPgoKCl9fQkVHSU5fREVD
TFMKCi8qIFN0cnVjdHVyZSB0byByZXByZXNlbnQgb25lIGVudHJ5IG9mIHRoZSBhbGlhcyBkYXRh
IGJhc2UuICAqLwpzdHJ1Y3QgYWxpYXNlbnQKICB7CiAgICBjaGFyICphbGlhc19uYW1lOwogICAg
c2l6ZV90IGFsaWFzX21lbWJlcnNfbGVuOwogICAgY2hhciAqKmFsaWFzX21lbWJlcnM7CiAgICBp
bnQgYWxpYXNfbG9jYWw7CiAgfTsKCgovKiBPcGVuIGFsaWFzIGRhdGEgYmFzZSBmaWxlcy4gICov
CmV4dGVybiB2b2lkIHNldGFsaWFzZW50ICh2b2lkKSBfX1RIUk9XOwoKLyogQ2xvc2UgYWxpYXMg
ZGF0YSBiYXNlIGZpbGVzLiAgKi8KZXh0ZXJuIHZvaWQgZW5kYWxpYXNlbnQgKHZvaWQpIF9fVEhS
T1c7CgovKiBHZXQgdGhlIG5leHQgZW50cnkgZnJvbSB0aGUgYWxpYXMgZGF0YSBiYXNlLiAgKi8K
ZXh0ZXJuIHN0cnVjdCBhbGlhc2VudCAqZ2V0YWxpYXNlbnQgKHZvaWQpIF9fVEhST1c7CgovKiBH
ZXQgdGhlIG5leHQgZW50cnkgZnJvbSB0aGUgYWxpYXMgZGF0YSBiYXNlIGFuZCBwdXQgaXQgaW4g
UkVTVUxUX0JVRi4gICovCmV4dGVybiBpbnQgZ2V0YWxpYXNlbnRfciAoc3RydWN0IGFsaWFzZW50
ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKCQkJICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmZmVy
LCBzaXplX3QgX19idWZsZW4sCgkJCSAgc3RydWN0IGFsaWFzZW50ICoqX19yZXN0cmljdCBfX3Jl
c3VsdCkgX19USFJPVzsKCi8qIEdldCBhbGlhcyBlbnRyeSBjb3JyZXNwb25kaW5nIHRvIE5BTUUu
ICAqLwpleHRlcm4gc3RydWN0IGFsaWFzZW50ICpnZXRhbGlhc2J5bmFtZSAoX19jb25zdCBjaGFy
ICpfX25hbWUpIF9fVEhST1c7CgovKiBHZXQgYWxpYXMgZW50cnkgY29ycmVzcG9uZGluZyB0byBO
QU1FIGFuZCBwdXQgaXQgaW4gUkVTVUxUX0JVRi4gICovCmV4dGVybiBpbnQgZ2V0YWxpYXNieW5h
bWVfciAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKCQkJICAgICBzdHJ1Y3QgYWxp
YXNlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAoJCQkgICAgIGNoYXIgKl9fcmVzdHJpY3Qg
X19idWZmZXIsIHNpemVfdCBfX2J1ZmxlbiwKCQkJICAgICBzdHJ1Y3QgYWxpYXNlbnQgKipfX3Jl
c3RyaWN0IF9fcmVzdWx0KSBfX1RIUk9XOwoKX19FTkRfREVDTFMKCiNlbmRpZiAvKiBhbGlhc2Vz
LmggKi8K
--e89a8f23596fe5eb2704caf04802
Content-Type: text/x-chdr; charset=US-ASCII; name="alloca.h"
Content-Disposition: attachment; filename="alloca.h"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7qjidem3

LyogQ29weXJpZ2h0IChDKSAxOTkyLCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5IEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLgogICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGli
cmFyeS4KCiAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAgIFRoZSBHTlUg
QyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCgogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUg
R05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQogICBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQogICAw
MjExMS0xMzA3IFVTQS4gICovCgojaWZuZGVmCV9BTExPQ0FfSAojZGVmaW5lCV9BTExPQ0FfSAkx
CgojaW5jbHVkZSA8ZmVhdHVyZXMuaD4KCiNkZWZpbmUJX19uZWVkX3NpemVfdAojaW5jbHVkZSA8
c3RkZGVmLmg+CgpfX0JFR0lOX0RFQ0xTCgovKiBSZW1vdmUgYW55IHByZXZpb3VzIGRlZmluaXRp
b25zLiAgKi8KI3VuZGVmCWFsbG9jYQoKLyogQWxsb2NhdGUgYSBibG9jayB0aGF0IHdpbGwgYmUg
ZnJlZWQgd2hlbiB0aGUgY2FsbGluZyBmdW5jdGlvbiBleGl0cy4gICovCmV4dGVybiB2b2lkICph
bGxvY2EgKHNpemVfdCBfX3NpemUpIF9fVEhST1c7CgojaWZkZWYJX19HTlVDX18KIyBkZWZpbmUg
YWxsb2NhKHNpemUpCV9fYnVpbHRpbl9hbGxvY2EgKHNpemUpCiNlbmRpZiAvKiBHQ0MuICAqLwoK
X19FTkRfREVDTFMKCiNlbmRpZiAvKiBhbGxvY2EuaCAqLwo=
--e89a8f23596fe5eb2704caf04802
Content-Type: text/x-chdr; charset=US-ASCII; name="ar.h"
Content-Disposition: attachment; filename="ar.h"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7qjideo4

LyogSGVhZGVyIGRlc2NyaWJpbmcgYGFyJyBhcmNoaXZlIGZpbGUgZm9ybWF0LgogICBDb3B5cmln
aHQgKEMpIDE5OTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgoKICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAg
IHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgoKICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICAgTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAg
TGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlCiAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3Vp
dGUgMzMwLCBCb3N0b24sIE1BCiAgIDAyMTExLTEzMDcgVVNBLiAgKi8KCiNpZm5kZWYgX0FSX0gK
I2RlZmluZSBfQVJfSCAxCgojaW5jbHVkZSA8c3lzL2NkZWZzLmg+CgovKiBBcmNoaXZlIGZpbGVz
IHN0YXJ0IHdpdGggdGhlIEFSTUFHIGlkZW50aWZ5aW5nIHN0cmluZy4gIFRoZW4gZm9sbG93cyBh
CiAgIGBzdHJ1Y3QgYXJfaGRyJywgYW5kIGFzIG1hbnkgYnl0ZXMgb2YgbWVtYmVyIGZpbGUgZGF0
YSBhcyBpdHMgYGFyX3NpemUnCiAgIG1lbWJlciBpbmRpY2F0ZXMsIGZvciBlYWNoIG1lbWJlciBm
aWxlLiAgKi8KCiNkZWZpbmUgQVJNQUcJIiE8YXJjaD5cbiIJLyogU3RyaW5nIHRoYXQgYmVnaW5z
IGFuIGFyY2hpdmUgZmlsZS4gICovCiNkZWZpbmUgU0FSTUFHCTgJCS8qIFNpemUgb2YgdGhhdCBz
dHJpbmcuICAqLwoKI2RlZmluZSBBUkZNQUcJImBcbiIJCS8qIFN0cmluZyBpbiBhcl9mbWFnIGF0
IGVuZCBvZiBlYWNoIGhlYWRlci4gICovCgpfX0JFR0lOX0RFQ0xTCgpzdHJ1Y3QgYXJfaGRyCiAg
ewogICAgY2hhciBhcl9uYW1lWzE2XTsJCS8qIE1lbWJlciBmaWxlIG5hbWUsIHNvbWV0aW1lcyAv
IHRlcm1pbmF0ZWQuICovCiAgICBjaGFyIGFyX2RhdGVbMTJdOwkJLyogRmlsZSBkYXRlLCBkZWNp
bWFsIHNlY29uZHMgc2luY2UgRXBvY2guICAqLwogICAgY2hhciBhcl91aWRbNl0sIGFyX2dpZFs2
XTsJLyogVXNlciBhbmQgZ3JvdXAgSURzLCBpbiBBU0NJSSBkZWNpbWFsLiAgKi8KICAgIGNoYXIg
YXJfbW9kZVs4XTsJCS8qIEZpbGUgbW9kZSwgaW4gQVNDSUkgb2N0YWwuICAqLwogICAgY2hhciBh
cl9zaXplWzEwXTsJCS8qIEZpbGUgc2l6ZSwgaW4gQVNDSUkgZGVjaW1hbC4gICovCiAgICBjaGFy
IGFyX2ZtYWdbMl07CQkvKiBBbHdheXMgY29udGFpbnMgQVJGTUFHLiAgKi8KICB9OwoKX19FTkRf
REVDTFMKCiNlbmRpZiAvKiBhci5oICovCg==
--e89a8f23596fe5eb2704caf04802
Content-Type: text/x-chdr; charset=US-ASCII; name="argp.h"
Content-Disposition: attachment; filename="argp.h"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7qjides5

LyogSGllcmFyY2hpYWwgYXJndW1lbnQgcGFyc2luZywgbGF5ZXJlZCBvdmVyIGdldG9wdC4KICAg
Q29weXJpZ2h0IChDKSAxOTk1LTE5OTksIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDkKICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgogICBXcml0dGVuIGJ5IE1pbGVzIEJhZGVyIDxtaWxlc0Bn
bnUuYWkubWl0LmVkdT4uCgogICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICAgdmVyc2lvbiAyLjEg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgog
ICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogICBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogICBMaWNlbnNlIGFsb25n
IHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKICAgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rv
biwgTUEKICAgMDIxMTEtMTMwNyBVU0EuICAqLwoKI2lmbmRlZiBfQVJHUF9ICiNkZWZpbmUgX0FS
R1BfSAoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxjdHlwZS5oPgojaW5jbHVkZSA8Z2V0
b3B0Lmg+CiNpbmNsdWRlIDxsaW1pdHMuaD4KCiNkZWZpbmUgX19uZWVkX2Vycm9yX3QKI2luY2x1
ZGUgPGVycm5vLmg+CgojaWZuZGVmIF9fY29uc3QKIyBkZWZpbmUgX19jb25zdCBjb25zdAojZW5k
aWYKCiNpZm5kZWYgX19USFJPVwojIGRlZmluZSBfX1RIUk9XCiNlbmRpZgojaWZuZGVmIF9fTlRI
CiMgZGVmaW5lIF9fTlRIKGZjdCkgZmN0IF9fVEhST1cKI2VuZGlmCgojaWZuZGVmIF9fYXR0cmli
dXRlX18KLyogVGhpcyBmZWF0dXJlIGlzIGF2YWlsYWJsZSBpbiBnY2MgdmVyc2lvbnMgMi41IGFu
ZCBsYXRlci4gICovCiMgaWYgX19HTlVDX18gPCAyIHx8IChfX0dOVUNfXyA9PSAyICYmIF9fR05V
Q19NSU5PUl9fIDwgNSkgfHwgX19TVFJJQ1RfQU5TSV9fCiMgIGRlZmluZSBfX2F0dHJpYnV0ZV9f
KFNwZWMpIC8qIGVtcHR5ICovCiMgZW5kaWYKLyogVGhlIF9fLXByb3RlY3RlZCB2YXJpYW50cyBv
ZiBgZm9ybWF0JyBhbmQgYHByaW50ZicgYXR0cmlidXRlcwogICBhcmUgYWNjZXB0ZWQgYnkgZ2Nj
IHZlcnNpb25zIDIuNi40IChlZmZlY3RpdmVseSAyLjcpIGFuZCBsYXRlci4gICovCiMgaWYgX19H
TlVDX18gPCAyIHx8IChfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fIDwgNykgfHwgX19T
VFJJQ1RfQU5TSV9fCiMgIGRlZmluZSBfX2Zvcm1hdF9fIGZvcm1hdAojICBkZWZpbmUgX19wcmlu
dGZfXyBwcmludGYKIyBlbmRpZgojZW5kaWYKCi8qIEdDQyAyLjk1IGFuZCBsYXRlciBoYXZlICJf
X3Jlc3RyaWN0IjsgQzk5IGNvbXBpbGVycyBoYXZlCiAgICJyZXN0cmljdCIsIGFuZCAiY29uZmln
dXJlIiBtYXkgaGF2ZSBkZWZpbmVkICJyZXN0cmljdCIuICAqLwojaWZuZGVmIF9fcmVzdHJpY3QK
IyBpZiAhICgyIDwgX19HTlVDX18gfHwgKDIgPT0gX19HTlVDX18gJiYgOTUgPD0gX19HTlVDX01J
Tk9SX18pKQojICBpZiBkZWZpbmVkIHJlc3RyaWN0IHx8IDE5OTkwMUwgPD0gX19TVERDX1ZFUlNJ
T05fXwojICAgZGVmaW5lIF9fcmVzdHJpY3QgcmVzdHJpY3QKIyAgZWxzZQojICAgZGVmaW5lIF9f
cmVzdHJpY3QKIyAgZW5kaWYKIyBlbmRpZgojZW5kaWYKCiNpZm5kZWYgX19lcnJvcl90X2RlZmlu
ZWQKdHlwZWRlZiBpbnQgZXJyb3JfdDsKIyBkZWZpbmUgX19lcnJvcl90X2RlZmluZWQKI2VuZGlm
CgwKI2lmZGVmICBfX2NwbHVzcGx1cwpleHRlcm4gIkMiIHsKI2VuZGlmCgovKiBBIGRlc2NyaXB0
aW9uIG9mIGEgcGFydGljdWxhciBvcHRpb24uICBBIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YKICAg
dGhlc2UgaXMgcGFzc2VkIGluIHRoZSBPUFRJT05TIGZpZWxkIG9mIGFuIGFyZ3Agc3RydWN0dXJl
LiAgRWFjaCBvcHRpb24KICAgZW50cnkgY2FuIGNvcnJlc3BvbmQgdG8gb25lIGxvbmcgb3B0aW9u
IGFuZC9vciBvbmUgc2hvcnQgb3B0aW9uOyBtb3JlCiAgIG5hbWVzIGZvciB0aGUgc2FtZSBvcHRp
b24gY2FuIGJlIGFkZGVkIGJ5IGZvbGxvd2luZyBhbiBlbnRyeSBpbiBhbiBvcHRpb24KICAgYXJy
YXkgd2l0aCBvcHRpb25zIGhhdmluZyB0aGUgT1BUSU9OX0FMSUFTIGZsYWcgc2V0LiAgKi8Kc3Ry
dWN0IGFyZ3Bfb3B0aW9uCnsKICAvKiBUaGUgbG9uZyBvcHRpb24gbmFtZS4gIEZvciBtb3JlIHRo
YW4gb25lIG5hbWUgZm9yIHRoZSBzYW1lIG9wdGlvbiwgeW91CiAgICAgY2FuIHVzZSBmb2xsb3dp
bmcgb3B0aW9ucyB3aXRoIHRoZSBPUFRJT05fQUxJQVMgZmxhZyBzZXQuICAqLwogIF9fY29uc3Qg
Y2hhciAqbmFtZTsKCiAgLyogV2hhdCBrZXkgaXMgcmV0dXJuZWQgZm9yIHRoaXMgb3B0aW9uLiAg
SWYgPiAwIGFuZCBwcmludGFibGUsIHRoZW4gaXQncwogICAgIGFsc28gYWNjZXB0ZWQgYXMgYSBz
aG9ydCBvcHRpb24uICAqLwogIGludCBrZXk7CgogIC8qIElmIG5vbi1OVUxMLCB0aGlzIGlzIHRo
ZSBuYW1lIG9mIHRoZSBhcmd1bWVudCBhc3NvY2lhdGVkIHdpdGggdGhpcwogICAgIG9wdGlvbiwg
d2hpY2ggaXMgcmVxdWlyZWQgdW5sZXNzIHRoZSBPUFRJT05fQVJHX09QVElPTkFMIGZsYWcgaXMg
c2V0LiAqLwogIF9fY29uc3QgY2hhciAqYXJnOwoKICAvKiBPUFRJT05fIGZsYWdzLiAgKi8KICBp
bnQgZmxhZ3M7CgogIC8qIFRoZSBkb2Mgc3RyaW5nIGZvciB0aGlzIG9wdGlvbi4gIElmIGJvdGgg
TkFNRSBhbmQgS0VZIGFyZSAwLCBUaGlzIHN0cmluZwogICAgIHdpbGwgYmUgcHJpbnRlZCBvdXRk
ZW50ZWQgZnJvbSB0aGUgbm9ybWFsIG9wdGlvbiBjb2x1bW4sIG1ha2luZyBpdAogICAgIHVzZWZ1
bCBhcyBhIGdyb3VwIGhlYWRlciAoaXQgd2lsbCBiZSB0aGUgZmlyc3QgdGhpbmcgcHJpbnRlZCBp
biBpdHMKICAgICBncm91cCk7IGluIHRoaXMgdXNhZ2UsIGl0J3MgY29udmVudGlvbmFsIHRvIGVu
ZCB0aGUgc3RyaW5nIHdpdGggYSBgOicuICAqLwogIF9fY29uc3QgY2hhciAqZG9jOwoKICAvKiBU
aGUgZ3JvdXAgdGhpcyBvcHRpb24gaXMgaW4uICBJbiBhIGxvbmcgaGVscCBtZXNzYWdlLCBvcHRp
b25zIGFyZSBzb3J0ZWQKICAgICBhbHBoYWJldGljYWxseSB3aXRoaW4gZWFjaCBncm91cCwgYW5k
IHRoZSBncm91cHMgcHJlc2VudGVkIGluIHRoZSBvcmRlcgogICAgIDAsIDEsIDIsIC4uLiwgbiwg
LW0sIC4uLiwgLTIsIC0xLiAgRXZlcnkgZW50cnkgaW4gYW4gb3B0aW9ucyBhcnJheSB3aXRoCiAg
ICAgaWYgdGhpcyBmaWVsZCAwIHdpbGwgaW5oZXJpdCB0aGUgZ3JvdXAgbnVtYmVyIG9mIHRoZSBw
cmV2aW91cyBlbnRyeSwgb3IKICAgICB6ZXJvIGlmIGl0J3MgdGhlIGZpcnN0IG9uZSwgdW5sZXNz
IGl0cyBhIGdyb3VwIGhlYWRlciAoTkFNRSBhbmQgS0VZIGJvdGgKICAgICAwKSwgaW4gd2hpY2gg
Y2FzZSwgdGhlIHByZXZpb3VzIGVudHJ5ICsgMSBpcyB0aGUgZGVmYXVsdC4gIEF1dG9tYWdpYwog
ICAgIG9wdGlvbnMgc3VjaCBhcyAtLWhlbHAgYXJlIHB1dCBpbnRvIGdyb3VwIC0xLiAgKi8KICBp
bnQgZ3JvdXA7Cn07CgovKiBUaGUgYXJndW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb3B0aW9u
IGlzIG9wdGlvbmFsLiAgKi8KI2RlZmluZSBPUFRJT05fQVJHX09QVElPTkFMCTB4MQoKLyogVGhp
cyBvcHRpb24gaXNuJ3QgZGlzcGxheWVkIGluIGFueSBoZWxwIG1lc3NhZ2VzLiAgKi8KI2RlZmlu
ZSBPUFRJT05fSElEREVOCSAgICAgICAJMHgyCgovKiBUaGlzIG9wdGlvbiBpcyBhbiBhbGlhcyBm
b3IgdGhlIGNsb3Nlc3QgcHJldmlvdXMgbm9uLWFsaWFzIG9wdGlvbi4gIFRoaXMKICAgbWVhbnMg
dGhhdCBpdCB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgc2FtZSBoZWxwIGVudHJ5LCBhbmQgd2ls
bCBpbmhlcml0CiAgIGZpZWxkcyBvdGhlciB0aGFuIE5BTUUgYW5kIEtFWSBmcm9tIHRoZSBhbGlh
c2VkIG9wdGlvbi4gICovCiNkZWZpbmUgT1BUSU9OX0FMSUFTCQkweDQKCi8qIFRoaXMgb3B0aW9u
IGlzbid0IGFjdHVhbGx5IGFuIG9wdGlvbiAoYW5kIHNvIHNob3VsZCBiZSBpZ25vcmVkIGJ5IHRo
ZQogICBhY3R1YWwgb3B0aW9uIHBhcnNlciksIGJ1dCByYXRoZXIgYW4gYXJiaXRyYXJ5IHBpZWNl
IG9mIGRvY3VtZW50YXRpb24gdGhhdAogICBzaG91bGQgYmUgZGlzcGxheWVkIGluIG11Y2ggdGhl
IHNhbWUgbWFubmVyIGFzIHRoZSBvcHRpb25zLiAgSWYgdGhpcyBmbGFnCiAgIGlzIHNldCwgdGhl
biB0aGUgb3B0aW9uIE5BTUUgZmllbGQgaXMgZGlzcGxheWVkIHVubW9kaWZpZWQgKGUuZy4sIG5v
IGAtLScKICAgcHJlZml4IGlzIGFkZGVkKSBhdCB0aGUgbGVmdC1tYXJnaW4gKHdoZXJlIGEgKnNo
b3J0KiBvcHRpb24gd291bGQgbm9ybWFsbHkKICAgYmUgZGlzcGxheWVkKSwgYW5kIHRoZSBkb2N1
bWVudGF0aW9uIHN0cmluZyBpbiB0aGUgbm9ybWFsIHBsYWNlLiAgRm9yCiAgIHB1cnBvc2VzIG9m
IHNvcnRpbmcsIGFueSBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIHB1bmN0dWF0aW9uIGlzIGlnbm9y
ZWQsCiAgIGV4Y2VwdCB0aGF0IGlmIHRoZSBmaXJzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIg
aXMgbm90IGAtJywgdGhpcyBlbnRyeQogICBpcyBkaXNwbGF5ZWQgYWZ0ZXIgYWxsIG9wdGlvbnMg
KGFuZCBPUFRJT05fRE9DIGVudHJpZXMgd2l0aCBhIGxlYWRpbmcgYC0nKQogICBpbiB0aGUgc2Ft
ZSBncm91cC4gICovCiNkZWZpbmUgT1BUSU9OX0RPQwkJMHg4CgovKiBUaGlzIG9wdGlvbiBzaG91
bGRuJ3QgYmUgaW5jbHVkZWQgaW4gYGxvbmcnIHVzYWdlIG1lc3NhZ2VzIChidXQgaXMgc3RpbGwK
ICAgaW5jbHVkZWQgaW4gaGVscCBtZXNzYWdlcykuICBUaGlzIGlzIG1haW5seSBpbnRlbmRlZCBm
b3Igb3B0aW9ucyB0aGF0IGFyZQogICBjb21wbGV0ZWx5IGRvY3VtZW50ZWQgaW4gYW4gYXJncCdz
IEFSR1NfRE9DIGZpZWxkLCBpbiB3aGljaCBjYXNlIGluY2x1ZGluZwogICB0aGUgb3B0aW9uIGlu
IHRoZSBnZW5lcmljIHVzYWdlIGxpc3Qgd291bGQgYmUgcmVkdW5kYW50LiAgRm9yIGluc3RhbmNl
LAogICBpZiBBUkdTX0RPQyBpcyAiRk9PIEJBUlxuLXggQkxBSCIsIGFuZCB0aGUgYC14JyBvcHRp
b24ncyBwdXJwb3NlIGlzIHRvCiAgIGRpc3Rpbmd1aXNoIHRoZXNlIHR3byBjYXNlcywgLXggc2hv
dWxkIHByb2JhYmx5IGJlIG1hcmtlZAogICBPUFRJT05fTk9fVVNBR0UuICAqLwojZGVmaW5lIE9Q
VElPTl9OT19VU0FHRQkJMHgxMAoMCnN0cnVjdCBhcmdwOwkJCS8qIGZ3ZCBkZWNsYXJlIHRoaXMg
dHlwZSAqLwpzdHJ1Y3QgYXJncF9zdGF0ZTsJCS8qICIgKi8Kc3RydWN0IGFyZ3BfY2hpbGQ7CQkv
KiAiICovCgovKiBUaGUgdHlwZSBvZiBhIHBvaW50ZXIgdG8gYW4gYXJncCBwYXJzaW5nIGZ1bmN0
aW9uLiAgKi8KdHlwZWRlZiBlcnJvcl90ICgqYXJncF9wYXJzZXJfdCkgKGludCBfX2tleSwgY2hh
ciAqX19hcmcsCgkJCQkgIHN0cnVjdCBhcmdwX3N0YXRlICpfX3N0YXRlKTsKCi8qIFdoYXQgdG8g
cmV0dXJuIGZvciB1bnJlY29nbml6ZWQga2V5cy4gIEZvciBzcGVjaWFsIEFSR1BfS0VZXyBrZXlz
LCBzdWNoCiAgIHJldHVybnMgd2lsbCBzaW1wbHkgYmUgaWdub3JlZC4gIEZvciB1c2VyIGtleXMs
IHRoaXMgZXJyb3Igd2lsbCBiZSB0dXJuZWQKICAgaW50byBFSU5WQUwgKGlmIHRoZSBjYWxsIHRv
IGFyZ3BfcGFyc2UgaXMgc3VjaCB0aGF0IGVycm9ycyBhcmUgcHJvcGFnYXRlZAogICBiYWNrIHRv
IHRoZSB1c2VyIGluc3RlYWQgb2YgZXhpdGluZyk7IHJldHVybmluZyBFSU5WQUwgaXRzZWxmIHdv
dWxkIHJlc3VsdAogICBpbiBhbiBpbW1lZGlhdGUgc3RvcCB0byBwYXJzaW5nIGluICphbGwqIGNh
c2VzLiAgKi8KI2RlZmluZSBBUkdQX0VSUl9VTktOT1dOCUUyQklHIC8qIEh1cmQgc2hvdWxkIG5l
dmVyIG5lZWQgRTJCSUcuICBYWFggKi8KCi8qIFNwZWNpYWwgdmFsdWVzIGZvciB0aGUgS0VZIGFy
Z3VtZW50IHRvIGFuIGFyZ3VtZW50IHBhcnNpbmcgZnVuY3Rpb24uCiAgIEFSR1BfRVJSX1VOS05P
V04gc2hvdWxkIGJlIHJldHVybmVkIGlmIHRoZXkgYXJlbid0IHVuZGVyc3Rvb2QuCgogICBUaGUg
c2VxdWVuY2Ugb2Yga2V5cyB0byBhIHBhcnNpbmcgZnVuY3Rpb24gaXMgZWl0aGVyICh3aGVyZSBl
YWNoCiAgIHVwcGVyY2FzZWQgd29yZCBzaG91bGQgYmUgcHJlZml4ZWQgYnkgYEFSR1BfS0VZXycg
YW5kIG9wdCBpcyBhIHVzZXIga2V5KToKCiAgICAgICBJTklUIG9wdC4uLiBOT19BUkdTIEVORCBT
VUNDRVNTICAtLSBObyBub24tb3B0aW9uIGFyZ3VtZW50cyBhdCBhbGwKICAgb3IgIElOSVQgKG9w
dCB8IEFSRykuLi4gRU5EIFNVQ0NFU1MgIC0tIEFsbCBub24tb3B0aW9uIGFyZ3MgcGFyc2VkCiAg
IG9yICBJTklUIChvcHQgfCBBUkcpLi4uIFNVQ0NFU1MgICAgICAtLSBTb21lIG5vbi1vcHRpb24g
YXJnIHVucmVjb2duaXplZAoKICAgVGhlIHRoaXJkIGNhc2UgaXMgd2hlcmUgZXZlcnkgcGFyc2Vy
IHJldHVybmVkIEFSR1BfS0VZX1VOS05PV04gZm9yIGFuCiAgIGFyZ3VtZW50LCBpbiB3aGljaCBj
YXNlIHBhcnNpbmcgc3RvcHMgYXQgdGhhdCBhcmd1bWVudCAocmV0dXJuaW5nIHRoZQogICB1bnBh
cnNlZCBhcmd1bWVudHMgdG8gdGhlIGNhbGxlciBvZiBhcmdwX3BhcnNlIGlmIHJlcXVlc3RlZCwg
b3Igc3RvcHBpbmcKICAgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGlmIG5vdCkuCgogICBJZiBhbiBl
cnJvciBvY2N1cnMgKGVpdGhlciBkZXRlY3RlZCBieSBhcmdwLCBvciBiZWNhdXNlIHRoZSBwYXJz
aW5nCiAgIGZ1bmN0aW9uIHJldHVybmVkIGFuIGVycm9yIHZhbHVlKSwgdGhlbiB0aGUgcGFyc2Vy
IGlzIGNhbGxlZCB3aXRoCiAgIEFSR1BfS0VZX0VSUk9SLCBhbmQgbm8gZnVydGhlciBjYWxscyBh
cmUgbWFkZS4gICovCgovKiBUaGlzIGlzIG5vdCBhbiBvcHRpb24gYXQgYWxsLCBidXQgcmF0aGVy
IGEgY29tbWFuZCBsaW5lIGFyZ3VtZW50LiAgSWYgYQogICBwYXJzZXIgcmVjZWl2aW5nIHRoaXMg
a2V5IHJldHVybnMgc3VjY2VzcywgdGhlIGZhY3QgaXMgcmVjb3JkZWQsIGFuZCB0aGUKICAgQVJH
UF9LRVlfTk9fQVJHUyBjYXNlIHdvbid0IGJlIHVzZWQuICBIT1dFVkVSLCBpZiB3aGlsZSBwcm9j
ZXNzaW5nIHRoZQogICBhcmd1bWVudCwgYSBwYXJzZXIgZnVuY3Rpb24gZGVjcmVtZW50cyB0aGUg
TkVYVCBmaWVsZCBvZiB0aGUgc3RhdGUgaXQncwogICBwYXNzZWQsIHRoZSBvcHRpb24gd29uJ3Qg
YmUgY29uc2lkZXJlZCBwcm9jZXNzZWQ7IHRoaXMgaXMgdG8gYWxsb3cgeW91IHRvCiAgIGFjdHVh
bGx5IG1vZGlmeSB0aGUgYXJndW1lbnQgKHBlcmhhcHMgaW50byBhbiBvcHRpb24pLCBhbmQgaGF2
ZSBpdAogICBwcm9jZXNzZWQgYWdhaW4uICAqLwojZGVmaW5lIEFSR1BfS0VZX0FSRwkJMAovKiBU
aGVyZSBhcmUgcmVtYWluaW5nIGFyZ3VtZW50cyBub3QgcGFyc2VkIGJ5IGFueSBwYXJzZXIsIHdo
aWNoIG1heSBiZSBmb3VuZAogICBzdGFydGluZyBhdCAoU1RBVEUtPmFyZ3YgKyBTVEFURS0+bmV4
dCkuICBJZiBzdWNjZXNzIGlzIHJldHVybmVkLCBidXQKICAgU1RBVEUtPm5leHQgbGVmdCB1bnRv
dWNoZWQsIGl0J3MgYXNzdW1lZCB0aGF0IGFsbCBhcmd1bWVudHMgd2VyZSBjb25zdW1lLAogICBv
dGhlcndpc2UsIHRoZSBwYXJzZXIgc2hvdWxkIGFkanVzdCBTVEFURS0+bmV4dCB0byByZWZsZWN0
IGFueSBhcmd1bWVudHMKICAgY29uc3VtZWQuICAqLwojZGVmaW5lIEFSR1BfS0VZX0FSR1MJCTB4
MTAwMDAwNgovKiBUaGVyZSBhcmUgbm8gbW9yZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGF0IGFs
bC4gICovCiNkZWZpbmUgQVJHUF9LRVlfRU5ECQkweDEwMDAwMDEKLyogQmVjYXVzZSBpdCdzIGNv
bW1vbiB0byB3YW50IHRvIGRvIHNvbWUgc3BlY2lhbCBwcm9jZXNzaW5nIGlmIHRoZXJlIGFyZW4n
dAogICBhbnkgbm9uLW9wdGlvbiBhcmdzLCB1c2VyIHBhcnNlcnMgYXJlIGNhbGxlZCB3aXRoIHRo
aXMga2V5IGlmIHRoZXkgZGlkbid0CiAgIHN1Y2Nlc3NmdWxseSBwcm9jZXNzIGFueSBub24tb3B0
aW9uIGFyZ3VtZW50cy4gIENhbGxlZCBqdXN0IGJlZm9yZQogICBBUkdQX0tFWV9FTkQgKHdoZXJl
IG1vcmUgZ2VuZXJhbCB2YWxpZGl0eSBjaGVja3Mgb24gcHJldmlvdXNseSBwYXJzZWQKICAgYXJn
dW1lbnRzIGNhbiB0YWtlIHBsYWNlKS4gICovCiNkZWZpbmUgQVJHUF9LRVlfTk9fQVJHUwkweDEw
MDAwMDIKLyogUGFzc2VkIGluIGJlZm9yZSBhbnkgcGFyc2luZyBpcyBkb25lLiAgQWZ0ZXJ3YXJk
cywgdGhlIHZhbHVlcyBvZiBlYWNoCiAgIGVsZW1lbnQgb2YgdGhlIENISUxEX0lOUFVUIGZpZWxk
LCBpZiBhbnksIGluIHRoZSBzdGF0ZSBzdHJ1Y3R1cmUgaXMKICAgY29waWVkIHRvIGVhY2ggY2hp
bGQncyBzdGF0ZSB0byBiZSB0aGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgSU5QVVQgZmllbGQuICAq
LwojZGVmaW5lIEFSR1BfS0VZX0lOSVQJCTB4MTAwMDAwMwovKiBVc2UgYWZ0ZXIgYWxsIG90aGVy
IGtleXMsIGluY2x1ZGluZyBTVUNDRVNTICYgRU5ELiAgKi8KI2RlZmluZSBBUkdQX0tFWV9GSU5J
CQkweDEwMDAwMDcKLyogUGFzc2VkIGluIHdoZW4gcGFyc2luZyBoYXMgc3VjY2Vzc2Z1bGx5IGJl
ZW4gY29tcGxldGVkIChldmVuIGlmIHRoZXJlIGFyZQogICBzdGlsbCBhcmd1bWVudHMgcmVtYWlu
aW5nKS4gICovCiNkZWZpbmUgQVJHUF9LRVlfU1VDQ0VTUwkweDEwMDAwMDQKLyogUGFzc2VkIGlu
IGlmIGFuIGVycm9yIG9jY3Vycy4gICovCiNkZWZpbmUgQVJHUF9LRVlfRVJST1IJCTB4MTAwMDAw
NQoKLyogQW4gYXJncCBzdHJ1Y3R1cmUgY29udGFpbnMgYSBzZXQgb2Ygb3B0aW9ucyBkZWNsYXJh
dGlvbnMsIGEgZnVuY3Rpb24gdG8KICAgZGVhbCB3aXRoIHBhcnNpbmcgb25lLCBkb2N1bWVudGF0
aW9uIHN0cmluZywgYSBwb3NzaWJsZSB2ZWN0b3Igb2YgY2hpbGQKICAgYXJncCdzLCBhbmQgcGVy
aGFwcyBhIGZ1bmN0aW9uIHRvIGZpbHRlciBoZWxwIG91dHB1dC4gIFdoZW4gYWN0dWFsbHkKICAg
cGFyc2luZyBvcHRpb25zLCBnZXRvcHQgaXMgY2FsbGVkIHdpdGggdGhlIHVuaW9uIG9mIGFsbCB0
aGUgYXJncAogICBzdHJ1Y3R1cmVzIGNoYWluZWQgdG9nZXRoZXIgdGhyb3VnaCB0aGVpciBDSElM
RCBwb2ludGVycywgd2l0aCBjb25mbGljdHMKICAgYmVpbmcgcmVzb2x2ZWQgaW4gZmF2b3Igb2Yg
dGhlIGZpcnN0IG9jY3VycmVuY2UgaW4gdGhlIGNoYWluLiAgKi8Kc3RydWN0IGFyZ3AKewogIC8q
IEFuIGFycmF5IG9mIGFyZ3Bfb3B0aW9uIHN0cnVjdHVyZXMsIHRlcm1pbmF0ZWQgYnkgYW4gZW50
cnkgd2l0aCBib3RoCiAgICAgTkFNRSBhbmQgS0VZIGhhdmluZyBhIHZhbHVlIG9mIDAuICAqLwog
IF9fY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uICpvcHRpb25zOwoKICAvKiBXaGF0IHRvIGRvIHdp
dGggYW4gb3B0aW9uIGZyb20gdGhpcyBzdHJ1Y3R1cmUuICBLRVkgaXMgdGhlIGtleQogICAgIGFz
c29jaWF0ZWQgd2l0aCB0aGUgb3B0aW9uLCBhbmQgQVJHIGlzIGFueSBhc3NvY2lhdGVkIGFyZ3Vt
ZW50IChOVUxMIGlmCiAgICAgbm9uZSB3YXMgc3VwcGxpZWQpLiAgSWYgS0VZIGlzbid0IHVuZGVy
c3Rvb2QsIEFSR1BfRVJSX1VOS05PV04gc2hvdWxkIGJlCiAgICAgcmV0dXJuZWQuICBJZiBhIG5v
bi16ZXJvLCBub24tQVJHUF9FUlJfVU5LTk9XTiB2YWx1ZSBpcyByZXR1cm5lZCwgdGhlbgogICAg
IHBhcnNpbmcgaXMgc3RvcHBlZCBpbW1lZGlhdGVseSwgYW5kIHRoYXQgdmFsdWUgaXMgcmV0dXJu
ZWQgZnJvbQogICAgIGFyZ3BfcGFyc2UoKS4gIEZvciBzcGVjaWFsIChub24tdXNlci1zdXBwbGll
ZCkgdmFsdWVzIG9mIEtFWSwgc2VlIHRoZQogICAgIEFSR1BfS0VZXyBkZWZpbml0aW9ucyBiZWxv
dy4gICovCiAgYXJncF9wYXJzZXJfdCBwYXJzZXI7CgogIC8qIEEgc3RyaW5nIGRlc2NyaWJpbmcg
d2hhdCBvdGhlciBhcmd1bWVudHMgYXJlIHdhbnRlZCBieSB0aGlzIHByb2dyYW0uICBJdAogICAg
IGlzIG9ubHkgdXNlZCBieSBhcmdwX3VzYWdlIHRvIHByaW50IHRoZSBgVXNhZ2U6JyBtZXNzYWdl
LiAgSWYgaXQKICAgICBjb250YWlucyBuZXdsaW5lcywgdGhlIHN0cmluZ3Mgc2VwYXJhdGVkIGJ5
IHRoZW0gYXJlIGNvbnNpZGVyZWQKICAgICBhbHRlcm5hdGl2ZSB1c2FnZSBwYXR0ZXJucywgYW5k
IHByaW50ZWQgb24gc2VwYXJhdGUgbGluZXMgKGxpbmVzIGFmdGVyCiAgICAgdGhlIGZpcnN0IGFy
ZSBwcmVmaXggYnkgYCAgb3I6ICcgaW5zdGVhZCBvZiBgVXNhZ2U6JykuICAqLwogIF9fY29uc3Qg
Y2hhciAqYXJnc19kb2M7CgogIC8qIElmIG5vbi1OVUxMLCBhIHN0cmluZyBjb250YWluaW5nIGV4
dHJhIHRleHQgdG8gYmUgcHJpbnRlZCBiZWZvcmUgYW5kCiAgICAgYWZ0ZXIgdGhlIG9wdGlvbnMg
aW4gYSBsb25nIGhlbHAgbWVzc2FnZSAoc2VwYXJhdGVkIGJ5IGEgdmVydGljYWwgdGFiCiAgICAg
YFx2JyBjaGFyYWN0ZXIpLiAgKi8KICBfX2NvbnN0IGNoYXIgKmRvYzsKCiAgLyogQSB2ZWN0b3Ig
b2YgYXJncF9jaGlsZHJlbiBzdHJ1Y3R1cmVzLCB0ZXJtaW5hdGVkIGJ5IGEgbWVtYmVyIHdpdGgg
YSAwCiAgICAgYXJncCBmaWVsZCwgcG9pbnRpbmcgdG8gY2hpbGQgYXJncHMgc2hvdWxkIGJlIHBh
cnNlZCB3aXRoIHRoaXMgb25lLiAgQW55CiAgICAgY29uZmxpY3RzIGFyZSByZXNvbHZlZCBpbiBm
YXZvciBvZiB0aGlzIGFyZ3AsIG9yIGVhcmx5IGFyZ3BzIGluIHRoZQogICAgIENISUxEUkVOIGxp
c3QuICBUaGlzIGZpZWxkIGlzIHVzZWZ1bCBpZiB5b3UgdXNlIGxpYnJhcmllcyB0aGF0IHN1cHBs
eQogICAgIHRoZWlyIG93biBhcmdwIHN0cnVjdHVyZSwgd2hpY2ggeW91IHdhbnQgdG8gdXNlIGlu
IGNvbmp1bmN0aW9uIHdpdGggeW91cgogICAgIG93bi4gICovCiAgX19jb25zdCBzdHJ1Y3QgYXJn
cF9jaGlsZCAqY2hpbGRyZW47CgogIC8qIElmIG5vbi16ZXJvLCB0aGlzIHNob3VsZCBiZSBhIGZ1
bmN0aW9uIHRvIGZpbHRlciB0aGUgb3V0cHV0IG9mIGhlbHAKICAgICBtZXNzYWdlcy4gIEtFWSBp
cyBlaXRoZXIgYSBrZXkgZnJvbSBhbiBvcHRpb24sIGluIHdoaWNoIGNhc2UgVEVYVCBpcwogICAg
IHRoYXQgb3B0aW9uJ3MgaGVscCB0ZXh0LCBvciBhIHNwZWNpYWwga2V5IGZyb20gdGhlIEFSR1Bf
S0VZX0hFTFBfCiAgICAgZGVmaW5lcywgYmVsb3csIGRlc2NyaWJpbmcgd2hpY2ggb3RoZXIgaGVs
cCB0ZXh0IFRFWFQgaXMuICBUaGUgZnVuY3Rpb24KICAgICBzaG91bGQgcmV0dXJuIGVpdGhlciBU
RVhULCBpZiBpdCBzaG91bGQgYmUgdXNlZCBhcy1pcywgYSByZXBsYWNlbWVudAogICAgIHN0cmlu
Zywgd2hpY2ggc2hvdWxkIGJlIG1hbGxvY2VkLCBhbmQgd2lsbCBiZSBmcmVlZCBieSBhcmdwLCBv
ciBOVUxMLAogICAgIG1lYW5pbmcgYHByaW50IG5vdGhpbmcnLiAgVGhlIHZhbHVlIGZvciBURVhU
IGlzICphZnRlciogYW55IHRyYW5zbGF0aW9uCiAgICAgaGFzIGJlZW4gZG9uZSwgc28gaWYgYW55
IG9mIHRoZSByZXBsYWNlbWVudCB0ZXh0IGFsc28gbmVlZHMgdHJhbnNsYXRpb24sCiAgICAgdGhh
dCBzaG91bGQgYmUgZG9uZSBieSB0aGUgZmlsdGVyIGZ1bmN0aW9uLiAgSU5QVVQgaXMgZWl0aGVy
IHRoZSBpbnB1dAogICAgIHN1cHBsaWVkIHRvIGFyZ3BfcGFyc2UsIG9yIE5VTEwsIGlmIGFyZ3Bf
aGVscCB3YXMgY2FsbGVkIGRpcmVjdGx5LiAgKi8KICBjaGFyICooKmhlbHBfZmlsdGVyKSAoaW50
IF9fa2V5LCBfX2NvbnN0IGNoYXIgKl9fdGV4dCwgdm9pZCAqX19pbnB1dCk7CgogIC8qIElmIG5v
bi16ZXJvIHRoZSBzdHJpbmdzIHVzZWQgaW4gdGhlIGFyZ3AgbGlicmFyeSBhcmUgdHJhbnNsYXRl
ZCB1c2luZwogICAgIHRoZSBkb21haW4gZGVzY3JpYmVkIGJ5IHRoaXMgc3RyaW5nLiAgT3RoZXJ3
aXNlIHRoZSBjdXJyZW50bHkgaW5zdGFsbGVkCiAgICAgZGVmYXVsdCBkb21haW4gaXMgdXNlZC4g
ICovCiAgY29uc3QgY2hhciAqYXJncF9kb21haW47Cn07CgovKiBQb3NzaWJsZSBLRVkgYXJndW1l
bnRzIHRvIGEgaGVscCBmaWx0ZXIgZnVuY3Rpb24uICAqLwojZGVmaW5lIEFSR1BfS0VZX0hFTFBf
UFJFX0RPQwkweDIwMDAwMDEgLyogSGVscCB0ZXh0IHByZWNlZWRpbmcgb3B0aW9ucy4gKi8KI2Rl
ZmluZSBBUkdQX0tFWV9IRUxQX1BPU1RfRE9DCTB4MjAwMDAwMiAvKiBIZWxwIHRleHQgZm9sbG93
aW5nIG9wdGlvbnMuICovCiNkZWZpbmUgQVJHUF9LRVlfSEVMUF9IRUFERVIJMHgyMDAwMDAzIC8q
IE9wdGlvbiBoZWFkZXIgc3RyaW5nLiAqLwojZGVmaW5lIEFSR1BfS0VZX0hFTFBfRVhUUkEJMHgy
MDAwMDA0IC8qIEFmdGVyIGFsbCBvdGhlciBkb2N1bWVudGF0aW9uOwoJCQkJCSAgICAgVEVYVCBp
cyBOVUxMIGZvciB0aGlzIGtleS4gICovCi8qIEV4cGxhbmF0b3J5IG5vdGUgZW1pdHRlZCB3aGVu
IGR1cGxpY2F0ZSBvcHRpb24gYXJndW1lbnRzIGhhdmUgYmVlbgogICBzdXBwcmVzc2VkLiAgKi8K
I2RlZmluZSBBUkdQX0tFWV9IRUxQX0RVUF9BUkdTX05PVEUgMHgyMDAwMDA1CiNkZWZpbmUgQVJH
UF9LRVlfSEVMUF9BUkdTX0RPQwkweDIwMDAwMDYgLyogQXJndW1lbnQgZG9jIHN0cmluZy4gICov
CgwKLyogV2hlbiBhbiBhcmdwIGhhcyBhIG5vbi16ZXJvIENISUxEUkVOIGZpZWxkLCBpdCBzaG91
bGQgcG9pbnQgdG8gYSB2ZWN0b3Igb2YKICAgYXJncF9jaGlsZCBzdHJ1Y3R1cmVzLCBlYWNoIG9m
IHdoaWNoIGRlc2NyaWJlcyBhIHN1YnNpZGlhcnkgYXJncC4gICovCnN0cnVjdCBhcmdwX2NoaWxk
CnsKICAvKiBUaGUgY2hpbGQgcGFyc2VyLiAgKi8KICBfX2NvbnN0IHN0cnVjdCBhcmdwICphcmdw
OwoKICAvKiBGbGFncyBmb3IgdGhpcyBjaGlsZC4gICovCiAgaW50IGZsYWdzOwoKICAvKiBJZiBu
b24temVybywgYW4gb3B0aW9uYWwgaGVhZGVyIHRvIGJlIHByaW50ZWQgaW4gaGVscCBvdXRwdXQg
YmVmb3JlIHRoZQogICAgIGNoaWxkIG9wdGlvbnMuICBBcyBhIHNpZGUtZWZmZWN0LCBhIG5vbi16
ZXJvIHZhbHVlIGZvcmNlcyB0aGUgY2hpbGQKICAgICBvcHRpb25zIHRvIGJlIGdyb3VwZWQgdG9n
ZXRoZXI7IHRvIGFjaGlldmUgdGhpcyBlZmZlY3Qgd2l0aG91dCBhY3R1YWxseQogICAgIHByaW50
aW5nIGEgaGVhZGVyIHN0cmluZywgdXNlIGEgdmFsdWUgb2YgIiIuICAqLwogIF9fY29uc3QgY2hh
ciAqaGVhZGVyOwoKICAvKiBXaGVyZSB0byBncm91cCB0aGUgY2hpbGQgb3B0aW9ucyByZWxhdGl2
ZSB0byB0aGUgb3RoZXIgKGBjb25zb2xpZGF0ZWQnKQogICAgIG9wdGlvbnMgaW4gdGhlIHBhcmVu
dCBhcmdwOyB0aGUgdmFsdWVzIGFyZSB0aGUgc2FtZSBhcyB0aGUgR1JPVVAgZmllbGQKICAgICBp
biBhcmdwX29wdGlvbiBzdHJ1Y3RzLCBidXQgYWxsIGNoaWxkLWdyb3VwaW5ncyBmb2xsb3cgcGFy
ZW50IG9wdGlvbnMgYXQKICAgICBhIHBhcnRpY3VsYXIgZ3JvdXAgbGV2ZWwuICBJZiBib3RoIHRo
aXMgZmllbGQgYW5kIEhFQURFUiBhcmUgemVybywgdGhlbgogICAgIHRoZXkgYXJlbid0IGdyb3Vw
ZWQgYXQgYWxsLCBidXQgcmF0aGVyIG1lcmdlZCB3aXRoIHRoZSBwYXJlbnQgb3B0aW9ucwogICAg
IChtZXJnaW5nIHRoZSBjaGlsZCdzIGdyb3VwaW5nIGxldmVscyB3aXRoIHRoZSBwYXJlbnRzKS4g
ICovCiAgaW50IGdyb3VwOwp9OwoMCi8qIFBhcnNpbmcgc3RhdGUuICBUaGlzIGlzIHByb3ZpZGVk
IHRvIHBhcnNpbmcgZnVuY3Rpb25zIGNhbGxlZCBieSBhcmdwLAogICB3aGljaCBtYXkgZXhhbWlu
ZSBhbmQsIGFzIG5vdGVkLCBtb2RpZnkgZmllbGRzLiAgKi8Kc3RydWN0IGFyZ3Bfc3RhdGUKewog
IC8qIFRoZSB0b3AgbGV2ZWwgQVJHUCBiZWluZyBwYXJzZWQuICAqLwogIF9fY29uc3Qgc3RydWN0
IGFyZ3AgKnJvb3RfYXJncDsKCiAgLyogVGhlIGFyZ3VtZW50IHZlY3RvciBiZWluZyBwYXJzZWQu
ICBNYXkgYmUgbW9kaWZpZWQuICAqLwogIGludCBhcmdjOwogIGNoYXIgKiphcmd2OwoKICAvKiBU
aGUgaW5kZXggaW4gQVJHViBvZiB0aGUgbmV4dCBhcmcgdGhhdCB0byBiZSBwYXJzZWQuICBNYXkg
YmUgbW9kaWZpZWQuICovCiAgaW50IG5leHQ7CgogIC8qIFRoZSBmbGFncyBzdXBwbGllZCB0byBh
cmdwX3BhcnNlLiAgTWF5IGJlIG1vZGlmaWVkLiAgKi8KICB1bnNpZ25lZCBmbGFnczsKCiAgLyog
V2hpbGUgY2FsbGluZyBhIHBhcnNpbmcgZnVuY3Rpb24gd2l0aCBhIGtleSBvZiBBUkdQX0tFWV9B
UkcsIHRoaXMgaXMgdGhlCiAgICAgbnVtYmVyIG9mIHRoZSBjdXJyZW50IGFyZywgc3RhcnRpbmcg
YXQgemVybywgYW5kIGluY3JlbWVudGVkIGFmdGVyIGVhY2gKICAgICBzdWNoIGNhbGwgcmV0dXJu
cy4gIEF0IGFsbCBvdGhlciB0aW1lcywgdGhpcyBpcyB0aGUgbnVtYmVyIG9mIHN1Y2gKICAgICBh
cmd1bWVudHMgdGhhdCBoYXZlIGJlZW4gcHJvY2Vzc2VkLiAgKi8KICB1bnNpZ25lZCBhcmdfbnVt
OwoKICAvKiBJZiBub24temVybywgdGhlIGluZGV4IGluIEFSR1Ygb2YgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGZvbGxvd2luZyBhIHNwZWNpYWwKICAgICBgLS0nIGFyZ3VtZW50ICh3aGljaCBwcmV2ZW50
cyBhbnl0aGluZyBmb2xsb3dpbmcgYmVpbmcgaW50ZXJwcmV0ZWQgYXMgYW4KICAgICBvcHRpb24p
LiAgT25seSBzZXQgb25jZSBhcmd1bWVudCBwYXJzaW5nIGhhcyBwcm9jZWVkZWQgcGFzdCB0aGlz
IHBvaW50LiAqLwogIGludCBxdW90ZWQ7CgogIC8qIEFuIGFyYml0cmFyeSBwb2ludGVyIHBhc3Nl
ZCBpbiBmcm9tIHRoZSB1c2VyLiAgKi8KICB2b2lkICppbnB1dDsKICAvKiBWYWx1ZXMgdG8gcGFz
cyB0byBjaGlsZCBwYXJzZXJzLiAgVGhpcyB2ZWN0b3Igd2lsbCBiZSB0aGUgc2FtZSBsZW5ndGgg
YXMKICAgICB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciB0aGUgY3VycmVudCBwYXJzZXIuICAq
LwogIHZvaWQgKipjaGlsZF9pbnB1dHM7CgogIC8qIEZvciB0aGUgcGFyc2VyJ3MgdXNlLiAgSW5p
dGlhbGl6ZWQgdG8gMC4gICovCiAgdm9pZCAqaG9vazsKCiAgLyogVGhlIG5hbWUgdXNlZCB3aGVu
IHByaW50aW5nIG1lc3NhZ2VzLiAgVGhpcyBpcyBpbml0aWFsaXplZCB0byBBUkdWWzBdLAogICAg
IG9yIFBST0dSQU1fSU5WT0NBVElPTl9OQU1FIGlmIHRoYXQgaXMgdW5hdmFpbGFibGUuICAqLwog
IGNoYXIgKm5hbWU7CgogIC8qIFN0cmVhbXMgdXNlZCB3aGVuIGFyZ3AgcHJpbnRzIHNvbWV0aGlu
Zy4gICovCiAgRklMRSAqZXJyX3N0cmVhbTsJCS8qIEZvciBlcnJvcnM7IGluaXRpYWxpemVkIHRv
IHN0ZGVyci4gKi8KICBGSUxFICpvdXRfc3RyZWFtOwkJLyogRm9yIGluZm9ybWF0aW9uOyBpbml0
aWFsaXplZCB0byBzdGRvdXQuICovCgogIHZvaWQgKnBzdGF0ZTsJCQkvKiBQcml2YXRlLCBmb3Ig
dXNlIGJ5IGFyZ3AuICAqLwp9OwoMCi8qIEZsYWdzIGZvciBhcmdwX3BhcnNlIChub3RlIHRoYXQg
dGhlIGRlZmF1bHRzIGFyZSB0aG9zZSB0aGF0IGFyZQogICBjb252ZW5pZW50IGZvciBwcm9ncmFt
IGNvbW1hbmQgbGluZSBwYXJzaW5nKTogKi8KCi8qIERvbid0IGlnbm9yZSB0aGUgZmlyc3QgZWxl
bWVudCBvZiBBUkdWLiAgTm9ybWFsbHkgKGFuZCBhbHdheXMgdW5sZXNzCiAgIEFSR1BfTk9fRVJS
UyBpcyBzZXQpIHRoZSBmaXJzdCBlbGVtZW50IG9mIHRoZSBhcmd1bWVudCB2ZWN0b3IgaXMKICAg
c2tpcHBlZCBmb3Igb3B0aW9uIHBhcnNpbmcgcHVycG9zZXMsIGFzIGl0IGNvcnJlc3BvbmRzIHRv
IHRoZSBwcm9ncmFtIG5hbWUKICAgaW4gYSBjb21tYW5kIGxpbmUuICAqLwojZGVmaW5lIEFSR1Bf
UEFSU0VfQVJHVjAgIDB4MDEKCi8qIERvbid0IHByaW50IGVycm9yIG1lc3NhZ2VzIGZvciB1bmtu
b3duIG9wdGlvbnMgdG8gc3RkZXJyOyB1bmxlc3MgdGhpcyBmbGFnCiAgIGlzIHNldCwgQVJHUF9Q
QVJTRV9BUkdWMCBpcyBpZ25vcmVkLCBhcyBBUkdWWzBdIGlzIHVzZWQgYXMgdGhlIHByb2dyYW0K
ICAgbmFtZSBpbiB0aGUgZXJyb3IgbWVzc2FnZXMuICBUaGlzIGZsYWcgaW1wbGllcyBBUkdQX05P
X0VYSVQgKG9uIHRoZQogICBhc3N1bXB0aW9uIHRoYXQgc2lsZW50IGV4aXRpbmcgdXBvbiBlcnJv
cnMgaXMgYmFkIGJlaGF2aW91cikuICAqLwojZGVmaW5lIEFSR1BfTk9fRVJSUwkweDAyCgovKiBE
b24ndCBwYXJzZSBhbnkgbm9uLW9wdGlvbiBhcmdzLiAgTm9ybWFsbHkgbm9uLW9wdGlvbiBhcmdz
IGFyZSBwYXJzZWQgYnkKICAgY2FsbGluZyB0aGUgcGFyc2UgZnVuY3Rpb25zIHdpdGggYSBrZXkg
b2YgQVJHUF9LRVlfQVJHLCBhbmQgdGhlIGFjdHVhbCBhcmcKICAgYXMgdGhlIHZhbHVlLiAgU2lu
Y2UgaXQncyBpbXBvc3NpYmxlIHRvIGtub3cgd2hpY2ggcGFyc2UgZnVuY3Rpb24gd2FudHMgdG8K
ICAgaGFuZGxlIGl0LCBlYWNoIG9uZSBpcyBjYWxsZWQgaW4gdHVybiwgdW50aWwgb25lIHJldHVy
bnMgMCBvciBhbiBlcnJvcgogICBvdGhlciB0aGFuIEFSR1BfRVJSX1VOS05PV047IGlmIGFuIGFy
Z3VtZW50IGlzIGhhbmRsZWQgYnkgbm8gb25lLCB0aGUKICAgYXJncF9wYXJzZSByZXR1cm5zIHBy
ZW1hdHVyZWx5IChidXQgd2l0aCBhIHJldHVybiB2YWx1ZSBvZiAwKS4gIElmIGFsbAogICBhcmdz
IGhhdmUgYmVlbiBwYXJzZWQgd2l0aG91dCBlcnJvciwgYWxsIHBhcnNpbmcgZnVuY3Rpb25zIGFy
ZSBjYWxsZWQgb25lCiAgIGxhc3QgdGltZSB3aXRoIGEga2V5IG9mIEFSR1BfS0VZX0VORC4gIFRo
aXMgZmxhZyBuZWVkbid0IG5vcm1hbGx5IGJlIHNldCwKICAgYXMgdGhlIG5vcm1hbCBiZWhhdmlv
ciBpcyB0byBzdG9wIHBhcnNpbmcgYXMgc29vbiBhcyBzb21lIGFyZ3VtZW50IGNhbid0CiAgIGJl
IGhhbmRsZWQuICAqLwojZGVmaW5lIEFSR1BfTk9fQVJHUwkweDA0CgovKiBQYXJzZSBvcHRpb25z
IGFuZCBhcmd1bWVudHMgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSBvY2N1ciBvbiB0aGUgY29tbWFu
ZAogICBsaW5lIC0tIG5vcm1hbGx5IHRoZXkncmUgcmVhcnJhbmdlZCBzbyB0aGF0IGFsbCBvcHRp
b25zIGNvbWUgZmlyc3QuICovCiNkZWZpbmUgQVJHUF9JTl9PUkRFUgkweDA4CgovKiBEb24ndCBw
cm92aWRlIHRoZSBzdGFuZGFyZCBsb25nIG9wdGlvbiAtLWhlbHAsIHdoaWNoIGNhdXNlcyB1c2Fn
ZSBhbmQKICAgICAgb3B0aW9uIGhlbHAgaW5mb3JtYXRpb24gdG8gYmUgb3V0cHV0IHRvIHN0ZG91
dCwgYW5kIGV4aXQgKDApIGNhbGxlZC4gKi8KI2RlZmluZSBBUkdQX05PX0hFTFAJMHgxMAoKLyog
RG9uJ3QgZXhpdCBvbiBlcnJvcnMgKHRoZXkgbWF5IHN0aWxsIHJlc3VsdCBpbiBlcnJvciBtZXNz
YWdlcykuICAqLwojZGVmaW5lIEFSR1BfTk9fRVhJVAkweDIwCgovKiBVc2UgdGhlIGdudSBnZXRv
cHQgYGxvbmctb25seScgcnVsZXMgZm9yIHBhcnNpbmcgYXJndW1lbnRzLiAgKi8KI2RlZmluZSBB
UkdQX0xPTkdfT05MWQkweDQwCgovKiBUdXJucyBvZmYgYW55IG1lc3NhZ2UtcHJpbnRpbmcvZXhp
dGluZyBvcHRpb25zLiAgKi8KI2RlZmluZSBBUkdQX1NJTEVOVCAgICAoQVJHUF9OT19FWElUIHwg
QVJHUF9OT19FUlJTIHwgQVJHUF9OT19IRUxQKQoKLyogUGFyc2UgdGhlIG9wdGlvbnMgc3RyaW5n
cyBpbiBBUkdDICYgQVJHViBhY2NvcmRpbmcgdG8gdGhlIG9wdGlvbnMgaW4gQVJHUC4KICAgRkxB
R1MgaXMgb25lIG9mIHRoZSBBUkdQXyBmbGFncyBhYm92ZS4gIElmIEFSR19JTkRFWCBpcyBub24t
TlVMTCwgdGhlCiAgIGluZGV4IGluIEFSR1Ygb2YgdGhlIGZpcnN0IHVucGFyc2VkIG9wdGlvbiBp
cyByZXR1cm5lZCBpbiBpdC4gIElmIGFuCiAgIHVua25vd24gb3B0aW9uIGlzIHByZXNlbnQsIEFS
R1BfRVJSX1VOS05PV04gaXMgcmV0dXJuZWQ7IGlmIHNvbWUgcGFyc2VyCiAgIHJvdXRpbmUgcmV0
dXJuZWQgYSBub24temVybyB2YWx1ZSwgaXQgaXMgcmV0dXJuZWQ7IG90aGVyd2lzZSAwIGlzCiAg
IHJldHVybmVkLiAgVGhpcyBmdW5jdGlvbiBtYXkgYWxzbyBjYWxsIGV4aXQgdW5sZXNzIHRoZSBB
UkdQX05PX0hFTFAgZmxhZwogICBpcyBzZXQuICBJTlBVVCBpcyBhIHBvaW50ZXIgdG8gYSB2YWx1
ZSB0byBiZSBwYXNzZWQgaW4gdG8gdGhlIHBhcnNlci4gICovCmV4dGVybiBlcnJvcl90IGFyZ3Bf
cGFyc2UgKF9fY29uc3Qgc3RydWN0IGFyZ3AgKl9fcmVzdHJpY3QgX19hcmdwLAoJCQkgICBpbnQg
X19hcmdjLCBjaGFyICoqX19yZXN0cmljdCBfX2FyZ3YsCgkJCSAgIHVuc2lnbmVkIF9fZmxhZ3Ms
IGludCAqX19yZXN0cmljdCBfX2FyZ19pbmRleCwKCQkJICAgdm9pZCAqX19yZXN0cmljdCBfX2lu
cHV0KTsKZXh0ZXJuIGVycm9yX3QgX19hcmdwX3BhcnNlIChfX2NvbnN0IHN0cnVjdCBhcmdwICpf
X3Jlc3RyaWN0IF9fYXJncCwKCQkJICAgICBpbnQgX19hcmdjLCBjaGFyICoqX19yZXN0cmljdCBf
X2FyZ3YsCgkJCSAgICAgdW5zaWduZWQgX19mbGFncywgaW50ICpfX3Jlc3RyaWN0IF9fYXJnX2lu
ZGV4LAoJCQkgICAgIHZvaWQgKl9fcmVzdHJpY3QgX19pbnB1dCk7CgwKLyogR2xvYmFsIHZhcmlh
Ymxlcy4gICovCgovKiBJZiBkZWZpbmVkIG9yIHNldCBieSB0aGUgdXNlciBwcm9ncmFtIHRvIGEg
bm9uLXplcm8gdmFsdWUsIHRoZW4gYSBkZWZhdWx0CiAgIG9wdGlvbiAtLXZlcnNpb24gaXMgYWRk
ZWQgKHVubGVzcyB0aGUgQVJHUF9OT19IRUxQIGZsYWcgaXMgdXNlZCksIHdoaWNoCiAgIHdpbGwg
cHJpbnQgdGhpcyBzdHJpbmcgZm9sbG93ZWQgYnkgYSBuZXdsaW5lIGFuZCBleGl0ICh1bmxlc3Mg
dGhlCiAgIEFSR1BfTk9fRVhJVCBmbGFnIGlzIHVzZWQpLiAgT3ZlcnJpZGRlbiBieSBBUkdQX1BS
T0dSQU1fVkVSU0lPTl9IT09LLiAgKi8KZXh0ZXJuIF9fY29uc3QgY2hhciAqYXJncF9wcm9ncmFt
X3ZlcnNpb247CgovKiBJZiBkZWZpbmVkIG9yIHNldCBieSB0aGUgdXNlciBwcm9ncmFtIHRvIGEg
bm9uLXplcm8gdmFsdWUsIHRoZW4gYSBkZWZhdWx0CiAgIG9wdGlvbiAtLXZlcnNpb24gaXMgYWRk
ZWQgKHVubGVzcyB0aGUgQVJHUF9OT19IRUxQIGZsYWcgaXMgdXNlZCksIHdoaWNoCiAgIGNhbGxz
IHRoaXMgZnVuY3Rpb24gd2l0aCBhIHN0cmVhbSB0byBwcmludCB0aGUgdmVyc2lvbiB0byBhbmQg
YSBwb2ludGVyIHRvCiAgIHRoZSBjdXJyZW50IHBhcnNpbmcgc3RhdGUsIGFuZCB0aGVuIGV4aXRz
ICh1bmxlc3MgdGhlIEFSR1BfTk9fRVhJVCBmbGFnIGlzCiAgIHVzZWQpLiAgVGhpcyB2YXJpYWJs
ZSB0YWtlcyBwcmVjZWRlbnQgb3ZlciBBUkdQX1BST0dSQU1fVkVSU0lPTi4gICovCmV4dGVybiB2
b2lkICgqYXJncF9wcm9ncmFtX3ZlcnNpb25faG9vaykgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJl
YW0sCgkJCQkJICBzdHJ1Y3QgYXJncF9zdGF0ZSAqX19yZXN0cmljdAoJCQkJCSAgX19zdGF0ZSk7
CgovKiBJZiBkZWZpbmVkIG9yIHNldCBieSB0aGUgdXNlciBwcm9ncmFtLCBpdCBzaG91bGQgcG9p
bnQgdG8gc3RyaW5nIHRoYXQgaXMKICAgdGhlIGJ1Zy1yZXBvcnRpbmcgYWRkcmVzcyBmb3IgdGhl
IHByb2dyYW0uICBJdCB3aWxsIGJlIHByaW50ZWQgYnkKICAgYXJncF9oZWxwIGlmIHRoZSBBUkdQ
X0hFTFBfQlVHX0FERFIgZmxhZyBpcyBzZXQgKGFzIGl0IGlzIGJ5IHZhcmlvdXMKICAgc3RhbmRh
cmQgaGVscCBtZXNzYWdlcyksIGVtYmVkZGVkIGluIGEgc2VudGVuY2UgdGhhdCBzYXlzIHNvbWV0
aGluZyBsaWtlCiAgIGBSZXBvcnQgYnVncyB0byBBRERSLicuICAqLwpleHRlcm4gX19jb25zdCBj
aGFyICphcmdwX3Byb2dyYW1fYnVnX2FkZHJlc3M7CgovKiBUaGUgZXhpdCBzdGF0dXMgdGhhdCBh
cmdwIHdpbGwgdXNlIHdoZW4gZXhpdGluZyBkdWUgdG8gYSBwYXJzaW5nIGVycm9yLgogICBJZiBu
b3QgZGVmaW5lZCBvciBzZXQgYnkgdGhlIHVzZXIgcHJvZ3JhbSwgdGhpcyBkZWZhdWx0cyB0byBF
WF9VU0FHRSBmcm9tCiAgIDxzeXNleGl0cy5oPi4gICovCmV4dGVybiBlcnJvcl90IGFyZ3BfZXJy
X2V4aXRfc3RhdHVzOwoMCi8qIEZsYWdzIGZvciBhcmdwX2hlbHAuICAqLwojZGVmaW5lIEFSR1Bf
SEVMUF9VU0FHRQkJMHgwMSAvKiBhIFVzYWdlOiBtZXNzYWdlLiAqLwojZGVmaW5lIEFSR1BfSEVM
UF9TSE9SVF9VU0FHRQkweDAyIC8qICAiIGJ1dCBkb24ndCBhY3R1YWxseSBwcmludCBvcHRpb25z
LiAqLwojZGVmaW5lIEFSR1BfSEVMUF9TRUUJCTB4MDQgLyogYSBgVHJ5IC4uLiBmb3IgbW9yZSBo
ZWxwJyBtZXNzYWdlLiAqLwojZGVmaW5lIEFSR1BfSEVMUF9MT05HCQkweDA4IC8qIGEgbG9uZyBo
ZWxwIG1lc3NhZ2UuICovCiNkZWZpbmUgQVJHUF9IRUxQX1BSRV9ET0MJMHgxMCAvKiBkb2Mgc3Ry
aW5nIHByZWNlZGluZyBsb25nIGhlbHAuICAqLwojZGVmaW5lIEFSR1BfSEVMUF9QT1NUX0RPQwkw
eDIwIC8qIGRvYyBzdHJpbmcgZm9sbG93aW5nIGxvbmcgaGVscC4gICovCiNkZWZpbmUgQVJHUF9I
RUxQX0RPQwkJKEFSR1BfSEVMUF9QUkVfRE9DIHwgQVJHUF9IRUxQX1BPU1RfRE9DKQojZGVmaW5l
IEFSR1BfSEVMUF9CVUdfQUREUgkweDQwIC8qIGJ1ZyByZXBvcnQgYWRkcmVzcyAqLwojZGVmaW5l
IEFSR1BfSEVMUF9MT05HX09OTFkJMHg4MCAvKiBtb2RpZnkgb3V0cHV0IGFwcHJvcHJpYXRlbHkg
dG8KCQkJCQlyZWZsZWN0IEFSR1BfTE9OR19PTkxZIG1vZGUuICAqLwoKLyogVGhlc2UgQVJHUF9I
RUxQIGZsYWdzIGFyZSBvbmx5IHVuZGVyc3Rvb2QgYnkgYXJncF9zdGF0ZV9oZWxwLiAgKi8KI2Rl
ZmluZSBBUkdQX0hFTFBfRVhJVF9FUlIJMHgxMDAgLyogQ2FsbCBleGl0KDEpIGluc3RlYWQgb2Yg
cmV0dXJuaW5nLiAgKi8KI2RlZmluZSBBUkdQX0hFTFBfRVhJVF9PSwkweDIwMCAvKiBDYWxsIGV4
aXQoMCkgaW5zdGVhZCBvZiByZXR1cm5pbmcuICAqLwoKLyogVGhlIHN0YW5kYXJkIHRoaW5nIHRv
IGRvIGFmdGVyIGEgcHJvZ3JhbSBjb21tYW5kIGxpbmUgcGFyc2luZyBlcnJvciwgaWYgYW4KICAg
ZXJyb3IgbWVzc2FnZSBoYXMgYWxyZWFkeSBiZWVuIHByaW50ZWQuICAqLwojZGVmaW5lIEFSR1Bf
SEVMUF9TVERfRVJSIFwKICAoQVJHUF9IRUxQX1NFRSB8IEFSR1BfSEVMUF9FWElUX0VSUikKLyog
VGhlIHN0YW5kYXJkIHRoaW5nIHRvIGRvIGFmdGVyIGEgcHJvZ3JhbSBjb21tYW5kIGxpbmUgcGFy
c2luZyBlcnJvciwgaWYgbm8KICAgbW9yZSBzcGVjaWZpYyBlcnJvciBtZXNzYWdlIGhhcyBiZWVu
IHByaW50ZWQuICAqLwojZGVmaW5lIEFSR1BfSEVMUF9TVERfVVNBR0UgXAogIChBUkdQX0hFTFBf
U0hPUlRfVVNBR0UgfCBBUkdQX0hFTFBfU0VFIHwgQVJHUF9IRUxQX0VYSVRfRVJSKQovKiBUaGUg
c3RhbmRhcmQgdGhpbmcgdG8gZG8gaW4gcmVzcG9uc2UgdG8gYSAtLWhlbHAgb3B0aW9uLiAgKi8K
I2RlZmluZSBBUkdQX0hFTFBfU1REX0hFTFAgXAogIChBUkdQX0hFTFBfU0hPUlRfVVNBR0UgfCBB
UkdQX0hFTFBfTE9ORyB8IEFSR1BfSEVMUF9FWElUX09LIFwKICAgfCBBUkdQX0hFTFBfRE9DIHwg
QVJHUF9IRUxQX0JVR19BRERSKQoKLyogT3V0cHV0IGEgdXNhZ2UgbWVzc2FnZSBmb3IgQVJHUCB0
byBTVFJFQU0uICBGTEFHUyBhcmUgZnJvbSB0aGUgc2V0CiAgIEFSR1BfSEVMUF8qLiAgKi8KZXh0
ZXJuIHZvaWQgYXJncF9oZWxwIChfX2NvbnN0IHN0cnVjdCBhcmdwICpfX3Jlc3RyaWN0IF9fYXJn
cCwKCQkgICAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKCQkgICAgICAgdW5zaWduZWQg
X19mbGFncywgY2hhciAqX19yZXN0cmljdCBfX25hbWUpOwpleHRlcm4gdm9pZCBfX2FyZ3BfaGVs
cCAoX19jb25zdCBzdHJ1Y3QgYXJncCAqX19yZXN0cmljdCBfX2FyZ3AsCgkJCSBGSUxFICpfX3Jl
c3RyaWN0IF9fc3RyZWFtLCB1bnNpZ25lZCBfX2ZsYWdzLAoJCQkgY2hhciAqX19uYW1lKTsKDAov
KiBUaGUgZm9sbG93aW5nIHJvdXRpbmVzIGFyZSBpbnRlbmRlZCB0byBiZSBjYWxsZWQgZnJvbSB3
aXRoaW4gYW4gYXJncAogICBwYXJzaW5nIHJvdXRpbmUgKHRodXMgdGFraW5nIGFuIGFyZ3Bfc3Rh
dGUgc3RydWN0dXJlIGFzIHRoZSBmaXJzdAogICBhcmd1bWVudCkuICBUaGV5IG1heSBvciBtYXkg
bm90IHByaW50IGFuIGVycm9yIG1lc3NhZ2UgYW5kIGV4aXQsIGRlcGVuZGluZwogICBvbiB0aGUg
ZmxhZ3MgaW4gU1RBVEUgLS0gaW4gYW55IGNhc2UsIHRoZSBjYWxsZXIgc2hvdWxkIGJlIHByZXBh
cmVkIGZvcgogICB0aGVtICpub3QqIHRvIGV4aXQsIGFuZCBzaG91bGQgcmV0dXJuIGFuIGFwcHJv
cGlhdGUgZXJyb3IgYWZ0ZXIgY2FsbGluZwogICB0aGVtLiAgW2FyZ3BfdXNhZ2UgJiBhcmdwX2Vy
cm9yIHNob3VsZCBwcm9iYWJseSBiZSBjYWxsZWQgYXJncF9zdGF0ZV8uLi4sCiAgIGJ1dCB0aGV5
J3JlIHVzZWQgb2Z0ZW4gZW5vdWdoIHRoYXQgdGhleSBzaG91bGQgYmUgc2hvcnRdICAqLwoKLyog
T3V0cHV0LCBpZiBhcHByb3ByaWF0ZSwgYSB1c2FnZSBtZXNzYWdlIGZvciBTVEFURSB0byBTVFJF
QU0uICBGTEFHUyBhcmUKICAgZnJvbSB0aGUgc2V0IEFSR1BfSEVMUF8qLiAgKi8KZXh0ZXJuIHZv
aWQgYXJncF9zdGF0ZV9oZWxwIChfX2NvbnN0IHN0cnVjdCBhcmdwX3N0YXRlICpfX3Jlc3RyaWN0
IF9fc3RhdGUsCgkJCSAgICAgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKCQkJICAgICB1bnNp
Z25lZCBpbnQgX19mbGFncyk7CmV4dGVybiB2b2lkIF9fYXJncF9zdGF0ZV9oZWxwIChfX2NvbnN0
IHN0cnVjdCBhcmdwX3N0YXRlICpfX3Jlc3RyaWN0IF9fc3RhdGUsCgkJCSAgICAgICBGSUxFICpf
X3Jlc3RyaWN0IF9fc3RyZWFtLAoJCQkgICAgICAgdW5zaWduZWQgaW50IF9fZmxhZ3MpOwoKLyog
UG9zc2libHkgb3V0cHV0IHRoZSBzdGFuZGFyZCB1c2FnZSBtZXNzYWdlIGZvciBBUkdQIHRvIHN0
ZGVyciBhbmQgZXhpdC4gICovCmV4dGVybiB2b2lkIGFyZ3BfdXNhZ2UgKF9fY29uc3Qgc3RydWN0
IGFyZ3Bfc3RhdGUgKl9fc3RhdGUpOwpleHRlcm4gdm9pZCBfX2FyZ3BfdXNhZ2UgKF9fY29uc3Qg
c3RydWN0IGFyZ3Bfc3RhdGUgKl9fc3RhdGUpOwoKLyogSWYgYXBwcm9wcmlhdGUsIHByaW50IHRo
ZSBwcmludGYgc3RyaW5nIEZNVCBhbmQgZm9sbG93aW5nIGFyZ3MsIHByZWNlZGVkCiAgIGJ5IHRo
ZSBwcm9ncmFtIG5hbWUgYW5kIGA6JywgdG8gc3RkZXJyLCBhbmQgZm9sbG93ZWQgYnkgYSBgVHJ5
IC4uLiAtLWhlbHAnCiAgIG1lc3NhZ2UsIHRoZW4gZXhpdCAoMSkuICAqLwpleHRlcm4gdm9pZCBh
cmdwX2Vycm9yIChfX2NvbnN0IHN0cnVjdCBhcmdwX3N0YXRlICpfX3Jlc3RyaWN0IF9fc3RhdGUs
CgkJCV9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIF9fYXR0cmlidXRl
X18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwpleHRlcm4gdm9pZCBfX2FyZ3Bf
ZXJyb3IgKF9fY29uc3Qgc3RydWN0IGFyZ3Bfc3RhdGUgKl9fcmVzdHJpY3QgX19zdGF0ZSwKCQkJ
ICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICBfX2F0dHJpYnV0ZV9f
ICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKCi8qIFNpbWlsYXIgdG8gdGhlIHN0
YW5kYXJkIGdudSBlcnJvci1yZXBvcnRpbmcgZnVuY3Rpb24gZXJyb3IoKSwgYnV0IHdpbGwKICAg
cmVzcGVjdCB0aGUgQVJHUF9OT19FWElUIGFuZCBBUkdQX05PX0VSUlMgZmxhZ3MgaW4gU1RBVEUs
IGFuZCB3aWxsIHByaW50CiAgIHRvIFNUQVRFLT5lcnJfc3RyZWFtLiAgVGhpcyBpcyB1c2VmdWwg
Zm9yIGFyZ3VtZW50IHBhcnNpbmcgY29kZSB0aGF0IGlzCiAgIHNoYXJlZCBiZXR3ZWVuIHByb2dy
YW0gc3RhcnR1cCAod2hlbiBleGl0aW5nIGlzIGRlc2lyZWQpIGFuZCBydW50aW1lCiAgIG9wdGlv
biBwYXJzaW5nICh3aGVuIHR5cGljYWxseSBhbiBlcnJvciBjb2RlIGlzIHJldHVybmVkIGluc3Rl
YWQpLiAgVGhlCiAgIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGlzIGZ1bmN0aW9uIGFuZCBhcmdwX2Vy
cm9yIGlzIHRoYXQgdGhlIGxhdHRlciBpcyBmb3IKICAgKnBhcnNpbmcgZXJyb3JzKiwgYW5kIHRo
ZSBmb3JtZXIgaXMgZm9yIG90aGVyIHByb2JsZW1zIHRoYXQgb2NjdXIgZHVyaW5nCiAgIHBhcnNp
bmcgYnV0IGRvbid0IHJlZmxlY3QgYSAoc3ludGFjdGljKSBwcm9ibGVtIHdpdGggdGhlIGlucHV0
LiAgKi8KZXh0ZXJuIHZvaWQgYXJncF9mYWlsdXJlIChfX2NvbnN0IHN0cnVjdCBhcmdwX3N0YXRl
ICpfX3Jlc3RyaWN0IF9fc3RhdGUsCgkJCSAgaW50IF9fc3RhdHVzLCBpbnQgX19lcnJudW0sCgkJ
CSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVf
XyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDQsIDUpKSk7CmV4dGVybiB2b2lkIF9fYXJncF9m
YWlsdXJlIChfX2NvbnN0IHN0cnVjdCBhcmdwX3N0YXRlICpfX3Jlc3RyaWN0IF9fc3RhdGUsCgkJ
CSAgICBpbnQgX19zdGF0dXMsIGludCBfX2Vycm51bSwKCQkJICAgIF9fY29uc3QgY2hhciAqX19y
ZXN0cmljdCBfX2ZtdCwgLi4uKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3By
aW50Zl9fLCA0LCA1KSkpOwoKLyogUmV0dXJucyB0cnVlIGlmIHRoZSBvcHRpb24gT1BUIGlzIGEg
dmFsaWQgc2hvcnQgb3B0aW9uLiAgKi8KZXh0ZXJuIGludCBfb3B0aW9uX2lzX3Nob3J0IChfX2Nv
bnN0IHN0cnVjdCBhcmdwX29wdGlvbiAqX19vcHQpIF9fVEhST1c7CmV4dGVybiBpbnQgX19vcHRp
b25faXNfc2hvcnQgKF9fY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uICpfX29wdCkgX19USFJPVzsK
Ci8qIFJldHVybnMgdHJ1ZSBpZiB0aGUgb3B0aW9uIE9QVCBpcyBpbiBmYWN0IHRoZSBsYXN0ICh1
bnVzZWQpIGVudHJ5IGluIGFuCiAgIG9wdGlvbnMgYXJyYXkuICAqLwpleHRlcm4gaW50IF9vcHRp
b25faXNfZW5kIChfX2NvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiAqX19vcHQpIF9fVEhST1c7CmV4
dGVybiBpbnQgX19vcHRpb25faXNfZW5kIChfX2NvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiAqX19v
cHQpIF9fVEhST1c7CgovKiBSZXR1cm4gdGhlIGlucHV0IGZpZWxkIGZvciBBUkdQIGluIHRoZSBw
YXJzZXIgY29ycmVzcG9uZGluZyB0byBTVEFURTsgdXNlZAogICBieSB0aGUgaGVscCByb3V0aW5l
cy4gICovCmV4dGVybiB2b2lkICpfYXJncF9pbnB1dCAoX19jb25zdCBzdHJ1Y3QgYXJncCAqX19y
ZXN0cmljdCBfX2FyZ3AsCgkJCSAgX19jb25zdCBzdHJ1Y3QgYXJncF9zdGF0ZSAqX19yZXN0cmlj
dCBfX3N0YXRlKQogICAgIF9fVEhST1c7CmV4dGVybiB2b2lkICpfX2FyZ3BfaW5wdXQgKF9fY29u
c3Qgc3RydWN0IGFyZ3AgKl9fcmVzdHJpY3QgX19hcmdwLAoJCQkgICBfX2NvbnN0IHN0cnVjdCBh
cmdwX3N0YXRlICpfX3Jlc3RyaWN0IF9fc3RhdGUpCiAgICAgX19USFJPVzsKDAojaWZkZWYgX19V
U0VfRVhURVJOX0lOTElORVMKCiMgaWYgIV9MSUJDCiMgIGRlZmluZSBfX2FyZ3BfdXNhZ2UgYXJn
cF91c2FnZQojICBkZWZpbmUgX19hcmdwX3N0YXRlX2hlbHAgYXJncF9zdGF0ZV9oZWxwCiMgIGRl
ZmluZSBfX29wdGlvbl9pc19zaG9ydCBfb3B0aW9uX2lzX3Nob3J0CiMgIGRlZmluZSBfX29wdGlv
bl9pc19lbmQgX29wdGlvbl9pc19lbmQKIyBlbmRpZgoKIyBpZm5kZWYgQVJHUF9FSQojICBkZWZp
bmUgQVJHUF9FSSBfX2V4dGVybl9pbmxpbmUKIyBlbmRpZgoKQVJHUF9FSSB2b2lkCl9fYXJncF91
c2FnZSAoX19jb25zdCBzdHJ1Y3QgYXJncF9zdGF0ZSAqX19zdGF0ZSkKewogIF9fYXJncF9zdGF0
ZV9oZWxwIChfX3N0YXRlLCBzdGRlcnIsIEFSR1BfSEVMUF9TVERfVVNBR0UpOwp9CgpBUkdQX0VJ
IGludApfX05USCAoX19vcHRpb25faXNfc2hvcnQgKF9fY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9u
ICpfX29wdCkpCnsKICBpZiAoX19vcHQtPmZsYWdzICYgT1BUSU9OX0RPQykKICAgIHJldHVybiAw
OwogIGVsc2UKICAgIHsKICAgICAgaW50IF9fa2V5ID0gX19vcHQtPmtleTsKICAgICAgcmV0dXJu
IF9fa2V5ID4gMCAmJiBfX2tleSA8PSBVQ0hBUl9NQVggJiYgaXNwcmludCAoX19rZXkpOwogICAg
fQp9CgpBUkdQX0VJIGludApfX05USCAoX19vcHRpb25faXNfZW5kIChfX2NvbnN0IHN0cnVjdCBh
cmdwX29wdGlvbiAqX19vcHQpKQp7CiAgcmV0dXJuICFfX29wdC0+a2V5ICYmICFfX29wdC0+bmFt
ZSAmJiAhX19vcHQtPmRvYyAmJiAhX19vcHQtPmdyb3VwOwp9CgojIGlmICFfTElCQwojICB1bmRl
ZiBfX2FyZ3BfdXNhZ2UKIyAgdW5kZWYgX19hcmdwX3N0YXRlX2hlbHAKIyAgdW5kZWYgX19vcHRp
b25faXNfc2hvcnQKIyAgdW5kZWYgX19vcHRpb25faXNfZW5kCiMgZW5kaWYKI2VuZGlmIC8qIFVz
ZSBleHRlcm4gaW5saW5lcy4gICovCgojaWZkZWYgIF9fY3BsdXNwbHVzCn0KI2VuZGlmCgojZW5k
aWYgLyogYXJncC5oICovCg==
--e89a8f23596fe5eb2704caf04802
Content-Type: text/x-chdr; charset=US-ASCII; name="argz.h"
Content-Disposition: attachment; filename="argz.h"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7qjidet6

LyogUm91dGluZXMgZm9yIGRlYWxpbmcgd2l0aCAnXDAnIHNlcGFyYXRlZCBhcmcgdmVjdG9ycy4K
ICAgQ29weXJpZ2h0IChDKSAxOTk1LDk2LDk3LDk4LDk5LDIwMDAsMjAwNCwyMDA3IEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMg
TGlicmFyeS4KCiAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICB2ZXJzaW9uIDIuMSBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAgIFRoZSBH
TlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCgogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0
aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQogICBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQog
ICAwMjExMS0xMzA3IFVTQS4gICovCgojaWZuZGVmIF9BUkdaX0gKI2RlZmluZSBfQVJHWl9ICTEK
CiNpbmNsdWRlIDxmZWF0dXJlcy5oPgoKI2RlZmluZSBfX25lZWRfZXJyb3JfdAojaW5jbHVkZSA8
ZXJybm8uaD4KI2luY2x1ZGUgPHN0cmluZy5oPgkJLyogTmVlZCBzaXplX3QsIGFuZCBzdHJjaHIg
aXMgY2FsbGVkIGJlbG93LiAgKi8KCiNpZm5kZWYgX19jb25zdAojIGRlZmluZSBfX2NvbnN0IGNv
bnN0CiNlbmRpZgoKI2lmbmRlZiBfX2Vycm9yX3RfZGVmaW5lZAp0eXBlZGVmIGludCBlcnJvcl90
OwojZW5kaWYKCgpfX0JFR0lOX0RFQ0xTCgovKiBNYWtlIGEgJ1wwJyBzZXBhcmF0ZWQgYXJnIHZl
Y3RvciBmcm9tIGEgdW5peCBhcmd2IHZlY3RvciwgcmV0dXJuaW5nIGl0IGluCiAgIEFSR1osIGFu
ZCB0aGUgdG90YWwgbGVuZ3RoIGluIExFTi4gIElmIGEgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3Ig
b2NjdXJzLAogICBFTk9NRU0gaXMgcmV0dXJuZWQsIG90aGVyd2lzZSAwLiAgVGhlIHJlc3VsdCBj
YW4gYmUgZGVzdHJveWVkIHVzaW5nIGZyZWUuICovCmV4dGVybiBlcnJvcl90IF9fYXJnel9jcmVh
dGUgKGNoYXIgKl9fY29uc3QgX19hcmd2W10sIGNoYXIgKipfX3Jlc3RyaWN0IF9fYXJneiwKCQkJ
ICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbGVuKSBfX1RIUk9XOwpleHRlcm4gZXJyb3JfdCBh
cmd6X2NyZWF0ZSAoY2hhciAqX19jb25zdCBfX2FyZ3ZbXSwgY2hhciAqKl9fcmVzdHJpY3QgX19h
cmd6LAoJCQkgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbGVuKSBfX1RIUk9XOwoKLyogTWFrZSBh
ICdcMCcgc2VwYXJhdGVkIGFyZyB2ZWN0b3IgZnJvbSBhIFNFUCBzZXBhcmF0ZWQgbGlzdCBpbgog
ICBTVFJJTkcsIHJldHVybmluZyBpdCBpbiBBUkdaLCBhbmQgdGhlIHRvdGFsIGxlbmd0aCBpbiBM
RU4uICBJZiBhCiAgIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIG9jY3VycywgRU5PTUVNIGlzIHJl
dHVybmVkLCBvdGhlcndpc2UgMC4KICAgVGhlIHJlc3VsdCBjYW4gYmUgZGVzdHJveWVkIHVzaW5n
IGZyZWUuICAqLwpleHRlcm4gZXJyb3JfdCBfX2FyZ3pfY3JlYXRlX3NlcCAoX19jb25zdCBjaGFy
ICpfX3Jlc3RyaWN0IF9fc3RyaW5nLAoJCQkJICBpbnQgX19zZXAsIGNoYXIgKipfX3Jlc3RyaWN0
IF9fYXJneiwKCQkJCSAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbGVuKSBfX1RIUk9XOwpleHRlcm4g
ZXJyb3JfdCBhcmd6X2NyZWF0ZV9zZXAgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3N0cmlu
ZywKCQkJCWludCBfX3NlcCwgY2hhciAqKl9fcmVzdHJpY3QgX19hcmd6LAoJCQkJc2l6ZV90ICpf
X3Jlc3RyaWN0IF9fbGVuKSBfX1RIUk9XOwoKLyogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHN0cmlu
Z3MgaW4gQVJHWi4gICovCmV4dGVybiBzaXplX3QgX19hcmd6X2NvdW50IChfX2NvbnN0IGNoYXIg
Kl9fYXJneiwgc2l6ZV90IF9fbGVuKQogICAgIF9fVEhST1cgX19hdHRyaWJ1dGVfcHVyZV9fOwpl
eHRlcm4gc2l6ZV90IGFyZ3pfY291bnQgKF9fY29uc3QgY2hhciAqX19hcmd6LCBzaXplX3QgX19s
ZW4pCiAgICAgX19USFJPVyBfX2F0dHJpYnV0ZV9wdXJlX187CgovKiBQdXRzIHBvaW50ZXJzIHRv
IGVhY2ggc3RyaW5nIGluIEFSR1ogaW50byBBUkdWLCB3aGljaCBtdXN0IGJlIGxhcmdlIGVub3Vn
aAogICB0byBob2xkIHRoZW0gYWxsLiAgKi8KZXh0ZXJuIHZvaWQgX19hcmd6X2V4dHJhY3QgKF9f
Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2FyZ3osIHNpemVfdCBfX2xlbiwKCQkJICAgIGNoYXIg
KipfX3Jlc3RyaWN0IF9fYXJndikgX19USFJPVzsKZXh0ZXJuIHZvaWQgYXJnel9leHRyYWN0IChf
X2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19hcmd6LCBzaXplX3QgX19sZW4sCgkJCSAgY2hhciAq
Kl9fcmVzdHJpY3QgX19hcmd2KSBfX1RIUk9XOwoKLyogTWFrZSAnXDAnIHNlcGFyYXRlZCBhcmcg
dmVjdG9yIEFSR1ogcHJpbnRhYmxlIGJ5IGNvbnZlcnRpbmcgYWxsIHRoZSAnXDAncwogICBleGNl
cHQgdGhlIGxhc3QgaW50byB0aGUgY2hhcmFjdGVyIFNFUC4gICovCmV4dGVybiB2b2lkIF9fYXJn
el9zdHJpbmdpZnkgKGNoYXIgKl9fYXJneiwgc2l6ZV90IF9fbGVuLCBpbnQgX19zZXApIF9fVEhS
T1c7CmV4dGVybiB2b2lkIGFyZ3pfc3RyaW5naWZ5IChjaGFyICpfX2FyZ3osIHNpemVfdCBfX2xl
biwgaW50IF9fc2VwKSBfX1RIUk9XOwoKLyogQXBwZW5kIEJVRiwgb2YgbGVuZ3RoIEJVRl9MRU4g
dG8gdGhlIGFyZ3ogdmVjdG9yIGluIEFSR1ogJiBBUkdaX0xFTi4gICovCmV4dGVybiBlcnJvcl90
IF9fYXJnel9hcHBlbmQgKGNoYXIgKipfX3Jlc3RyaWN0IF9fYXJneiwKCQkJICAgICAgc2l6ZV90
ICpfX3Jlc3RyaWN0IF9fYXJnel9sZW4sCgkJCSAgICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmlj
dCBfX2J1Ziwgc2l6ZV90IF9idWZfbGVuKQogICAgIF9fVEhST1c7CmV4dGVybiBlcnJvcl90IGFy
Z3pfYXBwZW5kIChjaGFyICoqX19yZXN0cmljdCBfX2FyZ3osCgkJCSAgICBzaXplX3QgKl9fcmVz
dHJpY3QgX19hcmd6X2xlbiwKCQkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwg
c2l6ZV90IF9fYnVmX2xlbikKICAgICBfX1RIUk9XOwoKLyogQXBwZW5kIFNUUiB0byB0aGUgYXJn
eiB2ZWN0b3IgaW4gQVJHWiAmIEFSR1pfTEVOLiAgKi8KZXh0ZXJuIGVycm9yX3QgX19hcmd6X2Fk
ZCAoY2hhciAqKl9fcmVzdHJpY3QgX19hcmd6LAoJCQkgICBzaXplX3QgKl9fcmVzdHJpY3QgX19h
cmd6X2xlbiwKCQkJICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3RyKSBfX1RIUk9XOwpl
eHRlcm4gZXJyb3JfdCBhcmd6X2FkZCAoY2hhciAqKl9fcmVzdHJpY3QgX19hcmd6LAoJCQkgc2l6
ZV90ICpfX3Jlc3RyaWN0IF9fYXJnel9sZW4sCgkJCSBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19zdHIpIF9fVEhST1c7CgovKiBBcHBlbmQgU0VQIHNlcGFyYXRlZCBsaXN0IGluIFNUUklORyB0
byB0aGUgYXJneiB2ZWN0b3IgaW4gQVJHWiAmCiAgIEFSR1pfTEVOLiAgKi8KZXh0ZXJuIGVycm9y
X3QgX19hcmd6X2FkZF9zZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fYXJneiwKCQkJICAgICAgIHNp
emVfdCAqX19yZXN0cmljdCBfX2FyZ3pfbGVuLAoJCQkgICAgICAgX19jb25zdCBjaGFyICpfX3Jl
c3RyaWN0IF9fc3RyaW5nLCBpbnQgX19kZWxpbSkKICAgICBfX1RIUk9XOwpleHRlcm4gZXJyb3Jf
dCBhcmd6X2FkZF9zZXAgKGNoYXIgKipfX3Jlc3RyaWN0IF9fYXJneiwKCQkJICAgICBzaXplX3Qg
Kl9fcmVzdHJpY3QgX19hcmd6X2xlbiwKCQkJICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg
X19zdHJpbmcsIGludCBfX2RlbGltKQogICAgIF9fVEhST1c7CgovKiBEZWxldGUgRU5UUlkgZnJv
bSBBUkdaICYgQVJHWl9MRU4sIGlmIGl0IGFwcGVhcnMgdGhlcmUuICAqLwpleHRlcm4gdm9pZCBf
X2FyZ3pfZGVsZXRlIChjaGFyICoqX19yZXN0cmljdCBfX2FyZ3osCgkJCSAgIHNpemVfdCAqX19y
ZXN0cmljdCBfX2FyZ3pfbGVuLAoJCQkgICBjaGFyICpfX3Jlc3RyaWN0IF9fZW50cnkpIF9fVEhS
T1c7CmV4dGVybiB2b2lkIGFyZ3pfZGVsZXRlIChjaGFyICoqX19yZXN0cmljdCBfX2FyZ3osCgkJ
CSBzaXplX3QgKl9fcmVzdHJpY3QgX19hcmd6X2xlbiwKCQkJIGNoYXIgKl9fcmVzdHJpY3QgX19l
bnRyeSkgX19USFJPVzsKCi8qIEluc2VydCBFTlRSWSBpbnRvIEFSR1ogJiBBUkdaX0xFTiBiZWZv
cmUgQkVGT1JFLCB3aGljaCBzaG91bGQgYmUgYW4KICAgZXhpc3RpbmcgZW50cnkgaW4gQVJHWjsg
aWYgQkVGT1JFIGlzIE5VTEwsIEVOVFJZIGlzIGFwcGVuZGVkIHRvIHRoZSBlbmQuCiAgIFNpbmNl
IEFSR1oncyBmaXJzdCBlbnRyeSBpcyB0aGUgc2FtZSBhcyBBUkdaLCBhcmd6X2luc2VydCAoQVJH
WiwgQVJHWl9MRU4sCiAgIEFSR1osIEVOVFJZKSB3aWxsIGluc2VydCBFTlRSWSBhdCB0aGUgYmVn
aW5uaW5nIG9mIEFSR1ouICBJZiBCRUZPUkUgaXMgbm90CiAgIGluIEFSR1osIEVJTlZBTCBpcyBy
ZXR1cm5lZCwgZWxzZSBpZiBtZW1vcnkgY2FuJ3QgYmUgYWxsb2NhdGVkIGZvciB0aGUgbmV3CiAg
IEFSR1osIEVOT01FTSBpcyByZXR1cm5lZCwgZWxzZSAwLiAgKi8KZXh0ZXJuIGVycm9yX3QgX19h
cmd6X2luc2VydCAoY2hhciAqKl9fcmVzdHJpY3QgX19hcmd6LAoJCQkgICAgICBzaXplX3QgKl9f
cmVzdHJpY3QgX19hcmd6X2xlbiwKCQkJICAgICAgY2hhciAqX19yZXN0cmljdCBfX2JlZm9yZSwK
CQkJICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZW50cnkpIF9fVEhST1c7CmV4dGVy
biBlcnJvcl90IGFyZ3pfaW5zZXJ0IChjaGFyICoqX19yZXN0cmljdCBfX2FyZ3osCgkJCSAgICBz
aXplX3QgKl9fcmVzdHJpY3QgX19hcmd6X2xlbiwKCQkJICAgIGNoYXIgKl9fcmVzdHJpY3QgX19i
ZWZvcmUsCgkJCSAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19lbnRyeSkgX19USFJPVzsK
Ci8qIFJlcGxhY2UgYW55IG9jY3VycmVuY2VzIG9mIHRoZSBzdHJpbmcgU1RSIGluIEFSR1ogd2l0
aCBXSVRILCByZWFsbG9jYXRpbmcKICAgQVJHWiBhcyBuZWNlc3NhcnkuICBJZiBSRVBMQUNFX0NP
VU5UIGlzIG5vbi16ZXJvLCAqUkVQTEFDRV9DT1VOVCB3aWxsIGJlCiAgIGluY3JlbWVudGVkIGJ5
IG51bWJlciBvZiByZXBsYWNlbWVudHMgcGVyZm9ybWVkLiAgKi8KZXh0ZXJuIGVycm9yX3QgX19h
cmd6X3JlcGxhY2UgKGNoYXIgKipfX3Jlc3RyaWN0IF9fYXJneiwKCQkJICAgICAgIHNpemVfdCAq
X19yZXN0cmljdCBfX2FyZ3pfbGVuLAoJCQkgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0
IF9fc3RyLAoJCQkgICAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fd2l0aCwKCQkJICAg
ICAgIHVuc2lnbmVkIGludCAqX19yZXN0cmljdCBfX3JlcGxhY2VfY291bnQpOwpleHRlcm4gZXJy
b3JfdCBhcmd6X3JlcGxhY2UgKGNoYXIgKipfX3Jlc3RyaWN0IF9fYXJneiwKCQkJICAgICBzaXpl
X3QgKl9fcmVzdHJpY3QgX19hcmd6X2xlbiwKCQkJICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJp
Y3QgX19zdHIsCgkJCSAgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fd2l0aCwKCQkJICAg
ICB1bnNpZ25lZCBpbnQgKl9fcmVzdHJpY3QgX19yZXBsYWNlX2NvdW50KTsKDAovKiBSZXR1cm5z
IHRoZSBuZXh0IGVudHJ5IGluIEFSR1ogJiBBUkdaX0xFTiBhZnRlciBFTlRSWSwgb3IgTlVMTCBp
ZiB0aGVyZQogICBhcmUgbm8gbW9yZS4gIElmIGVudHJ5IGlzIE5VTEwsIHRoZW4gdGhlIGZpcnN0
IGVudHJ5IGlzIHJldHVybmVkLiAgVGhpcwogICBiZWhhdmlvciBhbGxvd3MgdHdvIGNvbnZlbmll
bnQgaXRlcmF0aW9uIHN0eWxlczoKCiAgICBjaGFyICplbnRyeSA9IDA7CiAgICB3aGlsZSAoKGVu
dHJ5ID0gYXJnel9uZXh0IChhcmd6LCBhcmd6X2xlbiwgZW50cnkpKSkKICAgICAgLi4uOwoKICAg
b3IKCiAgICBjaGFyICplbnRyeTsKICAgIGZvciAoZW50cnkgPSBhcmd6OyBlbnRyeTsgZW50cnkg
PSBhcmd6X25leHQgKGFyZ3osIGFyZ3pfbGVuLCBlbnRyeSkpCiAgICAgIC4uLjsKKi8KZXh0ZXJu
IGNoYXIgKl9fYXJnel9uZXh0IChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19hcmd6LCBzaXpl
X3QgX19hcmd6X2xlbiwKCQkJICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19lbnRyeSkgX19U
SFJPVzsKZXh0ZXJuIGNoYXIgKmFyZ3pfbmV4dCAoX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f
YXJneiwgc2l6ZV90IF9fYXJnel9sZW4sCgkJCV9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Vu
dHJ5KSBfX1RIUk9XOwoKI2lmZGVmIF9fVVNFX0VYVEVSTl9JTkxJTkVTCl9fZXh0ZXJuX2lubGlu
ZSBjaGFyICoKX19OVEggKF9fYXJnel9uZXh0IChfX2NvbnN0IGNoYXIgKl9fYXJneiwgc2l6ZV90
IF9fYXJnel9sZW4sCgkJICAgIF9fY29uc3QgY2hhciAqX19lbnRyeSkpCnsKICBpZiAoX19lbnRy
eSkKICAgIHsKICAgICAgaWYgKF9fZW50cnkgPCBfX2FyZ3ogKyBfX2FyZ3pfbGVuKQoJX19lbnRy
eSA9IHN0cmNociAoX19lbnRyeSwgJ1wwJykgKyAxOwoKICAgICAgcmV0dXJuIF9fZW50cnkgPj0g
X19hcmd6ICsgX19hcmd6X2xlbiA/IChjaGFyICopIE5VTEwgOiAoY2hhciAqKSBfX2VudHJ5Owog
ICAgfQogIGVsc2UKICAgIHJldHVybiBfX2FyZ3pfbGVuID4gMCA/IChjaGFyICopIF9fYXJneiA6
IDA7Cn0KX19leHRlcm5faW5saW5lIGNoYXIgKgpfX05USCAoYXJnel9uZXh0IChfX2NvbnN0IGNo
YXIgKl9fYXJneiwgc2l6ZV90IF9fYXJnel9sZW4sCgkJICBfX2NvbnN0IGNoYXIgKl9fZW50cnkp
KQp7CiAgcmV0dXJuIF9fYXJnel9uZXh0IChfX2FyZ3osIF9fYXJnel9sZW4sIF9fZW50cnkpOwp9
CiNlbmRpZiAvKiBVc2UgZXh0ZXJuIGlubGluZXMuICAqLwoKX19FTkRfREVDTFMKCiNlbmRpZiAv
KiBhcmd6LmggKi8K
--e89a8f23596fe5eb2704caf04802
Content-Type: text/x-chdr; charset=US-ASCII; name="assert.h"
Content-Disposition: attachment; filename="assert.h"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7qjidev7

LyogQ29weXJpZ2h0IChDKSAxOTkxLDE5OTIsMTk5NC0yMDAxLDIwMDMsMjAwNCwyMDA3CiAgIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
R05VIEMgTGlicmFyeS4KCiAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICB2ZXJzaW9uIDIuMSBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAg
IFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgIExlc3NlciBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgIExpY2Vuc2UgYWxvbmcg
d2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQogICBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9u
LCBNQQogICAwMjExMS0xMzA3IFVTQS4gICovCgovKgogKglJU08gQzk5IFN0YW5kYXJkOiA3LjIg
RGlhZ25vc3RpY3MJPGFzc2VydC5oPgogKi8KCiNpZmRlZglfQVNTRVJUX0gKCiMgdW5kZWYJX0FT
U0VSVF9ICiMgdW5kZWYJYXNzZXJ0CiMgdW5kZWYgX19BU1NFUlRfVk9JRF9DQVNUCgojIGlmZGVm
CV9fVVNFX0dOVQojICB1bmRlZiBhc3NlcnRfcGVycm9yCiMgZW5kaWYKCiNlbmRpZiAvKiBhc3Nl
cnQuaAkqLwoKI2RlZmluZQlfQVNTRVJUX0gJMQojaW5jbHVkZSA8ZmVhdHVyZXMuaD4KCiNpZiBk
ZWZpbmVkIF9fY3BsdXNwbHVzICYmIF9fR05VQ19QUkVSRVEgKDIsOTUpCiMgZGVmaW5lIF9fQVNT
RVJUX1ZPSURfQ0FTVCBzdGF0aWNfY2FzdDx2b2lkPgojZWxzZQojIGRlZmluZSBfX0FTU0VSVF9W
T0lEX0NBU1QgKHZvaWQpCiNlbmRpZgoKLyogdm9pZCBhc3NlcnQgKGludCBleHByZXNzaW9uKTsK
CiAgIElmIE5ERUJVRyBpcyBkZWZpbmVkLCBkbyBub3RoaW5nLgogICBJZiBub3QsIGFuZCBFWFBS
RVNTSU9OIGlzIHplcm8sIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgYW5kIGFib3J0LiAgKi8KCiNp
ZmRlZglOREVCVUcKCiMgZGVmaW5lIGFzc2VydChleHByKQkJKF9fQVNTRVJUX1ZPSURfQ0FTVCAo
MCkpCgovKiB2b2lkIGFzc2VydF9wZXJyb3IgKGludCBlcnJudW0pOwoKICAgSWYgTkRFQlVHIGlz
IGRlZmluZWQsIGRvIG5vdGhpbmcuICBJZiBub3QsIGFuZCBFUlJOVU0gaXMgbm90IHplcm8sIHBy
aW50IGFuCiAgIGVycm9yIG1lc3NhZ2Ugd2l0aCB0aGUgZXJyb3IgdGV4dCBmb3IgRVJSTlVNIGFu
ZCBhYm9ydC4KICAgKFRoaXMgaXMgYSBHTlUgZXh0ZW5zaW9uLikgKi8KCiMgaWZkZWYJX19VU0Vf
R05VCiMgIGRlZmluZSBhc3NlcnRfcGVycm9yKGVycm51bSkJKF9fQVNTRVJUX1ZPSURfQ0FTVCAo
MCkpCiMgZW5kaWYKCiNlbHNlIC8qIE5vdCBOREVCVUcuICAqLwoKX19CRUdJTl9ERUNMUwoKLyog
VGhpcyBwcmludHMgYW4gIkFzc2VydGlvbiBmYWlsZWQiIG1lc3NhZ2UgYW5kIGFib3J0cy4gICov
CmV4dGVybiB2b2lkIF9fYXNzZXJ0X2ZhaWwgKF9fY29uc3QgY2hhciAqX19hc3NlcnRpb24sIF9f
Y29uc3QgY2hhciAqX19maWxlLAoJCQkgICB1bnNpZ25lZCBpbnQgX19saW5lLCBfX2NvbnN0IGNo
YXIgKl9fZnVuY3Rpb24pCiAgICAgX19USFJPVyBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9f
KSk7CgovKiBMaWtld2lzZSwgYnV0IHByaW50cyB0aGUgZXJyb3IgdGV4dCBmb3IgRVJSTlVNLiAg
Ki8KZXh0ZXJuIHZvaWQgX19hc3NlcnRfcGVycm9yX2ZhaWwgKGludCBfX2Vycm51bSwgX19jb25z
dCBjaGFyICpfX2ZpbGUsCgkJCQkgIHVuc2lnbmVkIGludCBfX2xpbmUsCgkJCQkgIF9fY29uc3Qg
Y2hhciAqX19mdW5jdGlvbikKICAgICBfX1RIUk9XIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJu
X18pKTsKCgovKiBUaGUgZm9sbG93aW5nIGlzIG5vdCBhdCBhbGwgdXNlZCBoZXJlIGJ1dCBuZWVk
ZWQgZm9yIHN0YW5kYXJkCiAgIGNvbXBsaWFuY2UuICAqLwpleHRlcm4gdm9pZCBfX2Fzc2VydCAo
Y29uc3QgY2hhciAqX19hc3NlcnRpb24sIGNvbnN0IGNoYXIgKl9fZmlsZSwgaW50IF9fbGluZSkK
ICAgICBfX1RIUk9XIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18pKTsKCgpfX0VORF9ERUNM
UwoKIyBkZWZpbmUgYXNzZXJ0KGV4cHIpCQkJCQkJCVwKICAoKGV4cHIpCQkJCQkJCQlcCiAgID8g
X19BU1NFUlRfVk9JRF9DQVNUICgwKQkJCQkJCVwKICAgOiBfX2Fzc2VydF9mYWlsIChfX1NUUklO
RyhleHByKSwgX19GSUxFX18sIF9fTElORV9fLCBfX0FTU0VSVF9GVU5DVElPTikpCgojIGlmZGVm
CV9fVVNFX0dOVQojICBkZWZpbmUgYXNzZXJ0X3BlcnJvcihlcnJudW0pCQkJCQkJXAogICghKGVy
cm51bSkJCQkJCQkJCVwKICAgPyBfX0FTU0VSVF9WT0lEX0NBU1QgKDApCQkJCQkJXAogICA6IF9f
YXNzZXJ0X3BlcnJvcl9mYWlsICgoZXJybnVtKSwgX19GSUxFX18sIF9fTElORV9fLCBfX0FTU0VS
VF9GVU5DVElPTikpCiMgZW5kaWYKCi8qIFZlcnNpb24gMi40IGFuZCBsYXRlciBvZiBHQ0MgZGVm
aW5lIGEgbWFnaWNhbCB2YXJpYWJsZSBgX19QUkVUVFlfRlVOQ1RJT05fXycKICAgd2hpY2ggY29u
dGFpbnMgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uIGN1cnJlbnRseSBiZWluZyBkZWZpbmVkLgog
ICBUaGlzIGlzIGJyb2tlbiBpbiBHKysgYmVmb3JlIHZlcnNpb24gMi42LgogICBDOXggaGFzIGEg
c2ltaWxhciB2YXJpYWJsZSBjYWxsZWQgX19mdW5jX18sIGJ1dCBwcmVmZXIgdGhlIEdDQyBvbmUg
c2luY2UKICAgaXQgZGVtYW5nbGVzIEMrKyBmdW5jdGlvbiBuYW1lcy4gICovCiMgaWYgZGVmaW5l
ZCBfX2NwbHVzcGx1cyA/IF9fR05VQ19QUkVSRVEgKDIsIDYpIDogX19HTlVDX1BSRVJFUSAoMiwg
NCkKIyAgIGRlZmluZSBfX0FTU0VSVF9GVU5DVElPTglfX1BSRVRUWV9GVU5DVElPTl9fCiMgZWxz
ZQojICBpZiBkZWZpbmVkIF9fU1REQ19WRVJTSU9OX18gJiYgX19TVERDX1ZFUlNJT05fXyA+PSAx
OTk5MDFMCiMgICBkZWZpbmUgX19BU1NFUlRfRlVOQ1RJT04JX19mdW5jX18KIyAgZWxzZQojICAg
ZGVmaW5lIF9fQVNTRVJUX0ZVTkNUSU9OCSgoX19jb25zdCBjaGFyICopIDApCiMgIGVuZGlmCiMg
ZW5kaWYKCiNlbmRpZiAvKiBOREVCVUcuICAqLwo=
--e89a8f23596fe5eb2704caf04802
Content-Type: text/x-chdr; charset=US-ASCII; name="byteswap.h"
Content-Disposition: attachment; filename="byteswap.h"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7qjidex8

LyogQ29weXJpZ2h0IChDKSAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KCiAgIFRoZSBHTlUgQyBMaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgogICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZQogICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUg
UGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQogICAwMjExMS0xMzA3IFVTQS4gICovCgojaWZu
ZGVmIF9CWVRFU1dBUF9ICiNkZWZpbmUgX0JZVEVTV0FQX0gJMQoKLyogR2V0IHRoZSBtYWNoaW5l
IHNwZWNpZmljLCBvcHRpbWl6ZWQgZGVmaW5pdGlvbnMuICAqLwojaW5jbHVkZSA8Yml0cy9ieXRl
c3dhcC5oPgoKCi8qIFRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgbXVzdCBhbGwgYmUgbWFjcm9z
IHNpbmNlIG90aGVyd2lzZSBzb21lCiAgIG9mIHRoZSBwb3NzaWJsZSBvcHRpbWl6YXRpb25zIGFy
ZSBub3QgcG9zc2libGUuICAqLwoKLyogUmV0dXJuIGEgdmFsdWUgd2l0aCBhbGwgYnl0ZXMgaW4g
dGhlIDE2IGJpdCBhcmd1bWVudCBzd2FwcGVkLiAgKi8KI2RlZmluZSBic3dhcF8xNih4KSBfX2Jz
d2FwXzE2ICh4KQoKLyogUmV0dXJuIGEgdmFsdWUgd2l0aCBhbGwgYnl0ZXMgaW4gdGhlIDMyIGJp
dCBhcmd1bWVudCBzd2FwcGVkLiAgKi8KI2RlZmluZSBic3dhcF8zMih4KSBfX2Jzd2FwXzMyICh4
KQoKI2lmIGRlZmluZWQgX19HTlVDX18gJiYgX19HTlVDX18gPj0gMgovKiBSZXR1cm4gYSB2YWx1
ZSB3aXRoIGFsbCBieXRlcyBpbiB0aGUgNjQgYml0IGFyZ3VtZW50IHN3YXBwZWQuICAqLwojIGRl
ZmluZSBic3dhcF82NCh4KSBfX2Jzd2FwXzY0ICh4KQojZW5kaWYKCiNlbmRpZiAvKiBieXRlc3dh
cC5oICovCg==
--e89a8f23596fe5eb2704caf04802
Content-Type: text/x-chdr; charset=US-ASCII; name="complex.h"
Content-Disposition: attachment; filename="complex.h"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7qjidez9

LyogQ29weXJpZ2h0IChDKSAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDA2IEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLgogICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGli
cmFyeS4KCiAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAgIFRoZSBHTlUg
QyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCgogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUg
R05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQogICBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQogICAw
MjExMS0xMzA3IFVTQS4gICovCgovKgogKglJU08gQzk5OiAgNy4zIENvbXBsZXggYXJpdGhtZXRp
Ywk8Y29tcGxleC5oPgogKi8KCiNpZm5kZWYgX0NPTVBMRVhfSAojZGVmaW5lIF9DT01QTEVYX0gJ
MQoKI2luY2x1ZGUgPGZlYXR1cmVzLmg+CgovKiBHZXQgZ2VuZXJhbCBhbmQgSVNPIEM5OSBzcGVj
aWZpYyBpbmZvcm1hdGlvbi4gICovCiNpbmNsdWRlIDxiaXRzL21hdGhkZWYuaD4KCl9fQkVHSU5f
REVDTFMKCi8qIFdlIG1pZ2h0IG5lZWQgdG8gYWRkIHN1cHBvcnQgZm9yIG1vcmUgY29tcGlsZXJz
IGhlcmUuICBCdXQgc2luY2UgSVNPCiAgIEM5OSBpcyBvdXQgaG9wZWZ1bGx5IGFsbCBtYWludGFp
bmVkIGNvbXBpbGVycyB3aWxsIHNvb24gcHJvdmlkZSB0aGUgZGF0YQogICB0eXBlcyBgZmxvYXQg
Y29tcGxleCcgYW5kIGBkb3VibGUgY29tcGxleCcuICAqLwojaWYgX19HTlVDX1BSRVJFUSAoMiwg
NykgJiYgIV9fR05VQ19QUkVSRVEgKDIsIDk3KQojIGRlZmluZSBfQ29tcGxleCBfX2NvbXBsZXhf
XwojZW5kaWYKCiNkZWZpbmUgY29tcGxleAkJX0NvbXBsZXgKCi8qIE5hcnJvd2VzdCBpbWFnaW5h
cnkgdW5pdC4gIFRoaXMgZGVwZW5kcyBvbiB0aGUgZmxvYXRpbmctcG9pbnQKICAgZXZhbHVhdGlv
biBtZXRob2QuCiAgIFhYWCBUaGlzIHByb2JhYmx5IGhhcyB0byBnbyBpbnRvIGEgZ2NjIHJlbGF0
ZWQgZmlsZS4gICovCiNkZWZpbmUgX0NvbXBsZXhfSQkoX19leHRlbnNpb25fXyAxLjBpRikKCi8q
IEFub3RoZXIgbW9yZSBkZXNjcmlwdGl2ZSBuYW1lIGlzIGBJJy4KICAgWFhYIE9uY2Ugd2UgaGF2
ZSB0aGUgaW1hZ2luYXJ5IHN1cHBvcnQgc3dpdGNoIHRoaXMgdG8gX0ltYWdpbmFyeV9JLiAgKi8K
I3VuZGVmIEkKI2RlZmluZSBJIF9Db21wbGV4X0kKCi8qIFRoZSBmaWxlIDxiaXRzL2NtYXRoY2Fs
bHMuaD4gY29udGFpbnMgdGhlIHByb3RvdHlwZXMgZm9yIGFsbCB0aGUKICAgYWN0dWFsIG1hdGgg
ZnVuY3Rpb25zLiAgVGhlc2UgbWFjcm9zIGFyZSB1c2VkIGZvciB0aG9zZSBwcm90b3R5cGVzLAog
ICBzbyB3ZSBjYW4gZWFzaWx5IGRlY2xhcmUgZWFjaCBmdW5jdGlvbiBhcyBib3RoIGBuYW1lJyBh
bmQgYF9fbmFtZScsCiAgIGFuZCBjYW4gZGVjbGFyZSB0aGUgZmxvYXQgdmVyc2lvbnMgYG5hbWVm
JyBhbmQgYF9fbmFtZWYnLiAgKi8KCiNkZWZpbmUgX19NQVRIQ0FMTChmdW5jdGlvbiwgYXJncykJ
XAogIF9fTUFUSERFQ0wgKF9NZG91YmxlX2NvbXBsZXhfLGZ1bmN0aW9uLCBhcmdzKQojZGVmaW5l
IF9fTUFUSERFQ0wodHlwZSwgZnVuY3Rpb24sIGFyZ3MpIFwKICBfX01BVEhERUNMXzEodHlwZSwg
ZnVuY3Rpb24sIGFyZ3MpOyBcCiAgX19NQVRIREVDTF8xKHR5cGUsIF9fQ09OQ0FUKF9fLGZ1bmN0
aW9uKSwgYXJncykKI2RlZmluZSBfX01BVEhERUNMXzEodHlwZSwgZnVuY3Rpb24sIGFyZ3MpIFwK
ICBleHRlcm4gdHlwZSBfX01BVEhfUFJFQ05BTUUoZnVuY3Rpb24pIGFyZ3MgX19USFJPVwoKI2Rl
ZmluZSBfTWRvdWJsZV8gCQlkb3VibGUKI2RlZmluZSBfX01BVEhfUFJFQ05BTUUobmFtZSkJbmFt
ZQojaW5jbHVkZSA8Yml0cy9jbWF0aGNhbGxzLmg+CiN1bmRlZglfTWRvdWJsZV8KI3VuZGVmCV9f
TUFUSF9QUkVDTkFNRQoKLyogTm93IHRoZSBmbG9hdCB2ZXJzaW9ucy4gICovCiNpZm5kZWYgX01m
bG9hdF8KIyBkZWZpbmUgX01mbG9hdF8JCWZsb2F0CiNlbmRpZgojZGVmaW5lIF9NZG91YmxlXyAJ
CV9NZmxvYXRfCiNpZmRlZiBfX1NURENfXwojIGRlZmluZSBfX01BVEhfUFJFQ05BTUUobmFtZSkJ
bmFtZSMjZgojZWxzZQojIGRlZmluZSBfX01BVEhfUFJFQ05BTUUobmFtZSkJbmFtZS8qKi9mCiNl
bmRpZgojaW5jbHVkZSA8Yml0cy9jbWF0aGNhbGxzLmg+CiN1bmRlZglfTWRvdWJsZV8KI3VuZGVm
CV9fTUFUSF9QUkVDTkFNRQoKLyogQW5kIHRoZSBsb25nIGRvdWJsZSB2ZXJzaW9ucy4gIEl0IGlz
IG5vbi1jcml0aWNhbCB0byBkZWZpbmUgdGhlbQogICBoZXJlIHVuY29uZGl0aW9uYWxseSBzaW5j
ZSBgbG9uZyBkb3VibGUnIGlzIHJlcXVpcmVkIGluIElTTyBDOTkuICAqLwojaWYgKF9fU1REQ19f
IC0gMCB8fCBfX0dOVUNfXyAtIDApIFwKICAgICYmICghZGVmaW5lZCBfX05PX0xPTkdfRE9VQkxF
X01BVEggfHwgZGVmaW5lZCBfX0xEQkxfQ09NUEFUKQojIGlmZGVmIF9fTERCTF9DT01QQVQKIyAg
dW5kZWYgX19NQVRIREVDTF8xCiMgIGRlZmluZSBfX01BVEhERUNMXzEodHlwZSwgZnVuY3Rpb24s
IGFyZ3MpIFwKICBleHRlcm4gdHlwZSBfX1JFRElSRUNUX05USChfX01BVEhfUFJFQ05BTUUoZnVu
Y3Rpb24pLCBhcmdzLCBmdW5jdGlvbikKIyBlbmRpZgoKIyBpZm5kZWYgX01sb25nX2RvdWJsZV8K
IyAgZGVmaW5lIF9NbG9uZ19kb3VibGVfCWxvbmcgZG91YmxlCiMgZW5kaWYKIyBkZWZpbmUgX01k
b3VibGVfIAkJX01sb25nX2RvdWJsZV8KIyBpZmRlZiBfX1NURENfXwojICBkZWZpbmUgX19NQVRI
X1BSRUNOQU1FKG5hbWUpCW5hbWUjI2wKIyBlbHNlCiMgIGRlZmluZSBfX01BVEhfUFJFQ05BTUUo
bmFtZSkJbmFtZS8qKi9sCiMgZW5kaWYKIyBpbmNsdWRlIDxiaXRzL2NtYXRoY2FsbHMuaD4KI2Vu
ZGlmCiN1bmRlZglfTWRvdWJsZV8KI3VuZGVmCV9fTUFUSF9QUkVDTkFNRQojdW5kZWYJX19NQVRI
REVDTF8xCiN1bmRlZglfX01BVEhERUNMCiN1bmRlZglfX01BVEhDQUxMCgpfX0VORF9ERUNMUwoK
I2VuZGlmIC8qIGNvbXBsZXguaCAqLwo=
--e89a8f23596fe5eb2704caf04802
Content-Type: text/x-chdr; charset=US-ASCII; name="cpio.h"
Content-Disposition: attachment; filename="cpio.h"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7qjidf010

LyogRXh0ZW5kZWQgY3BpbyBmb3JtYXQgZnJvbSBQT1NJWC4xLgogICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgR05VIEMgTGlicmFyeS4KICAgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTk4IEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBOT1RFOiBUaGUgY2Fub25pY2FsIHNvdXJjZSBv
ZiB0aGlzIGZpbGUgaXMgbWFpbnRhaW5lZCB3aXRoIHRoZSBHTlUgY3Bpby4KCiAgIFRoZSBHTlUg
QyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgogICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CgogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZQogICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU
ZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQogICAwMjExMS0xMzA3IFVTQS4gICov
CgojaWZuZGVmIF9DUElPX0gKI2RlZmluZSBfQ1BJT19IIDEKCi8qIEEgY3BpbyBhcmNoaXZlIGNv
bnNpc3RzIG9mIGEgc2VxdWVuY2Ugb2YgZmlsZXMuCiAgIEVhY2ggZmlsZSBoYXMgYSA3NiBieXRl
IGhlYWRlciwKICAgYSB2YXJpYWJsZSBsZW5ndGgsIE5VTCB0ZXJtaW5hdGVkIGZpbGVuYW1lLAog
ICBhbmQgdmFyaWFibGUgbGVuZ3RoIGZpbGUgZGF0YS4KICAgQSBoZWFkZXIgZm9yIGEgZmlsZW5h
bWUgIlRSQUlMRVIhISEiIGluZGljYXRlcyB0aGUgZW5kIG9mIHRoZSBhcmNoaXZlLiAgKi8KCi8q
IEFsbCB0aGUgZmllbGRzIGluIHRoZSBoZWFkZXIgYXJlIElTTyA2NDYgKGFwcHJveGltYXRlbHkg
QVNDSUkpIHN0cmluZ3MKICAgb2Ygb2N0YWwgbnVtYmVycywgbGVmdCBwYWRkZWQsIG5vdCBOVUwg
dGVybWluYXRlZC4KCiAgIEZpZWxkIE5hbWUJTGVuZ3RoIGluIEJ5dGVzCU5vdGVzCiAgIGNfbWFn
aWMJNgkJbXVzdCBiZSAiMDcwNzA3IgogICBjX2Rldgk2CiAgIGNfaW5vCTYKICAgY19tb2RlCTYJ
CXNlZSBiZWxvdyBmb3IgdmFsdWUKICAgY191aWQJNgogICBjX2dpZAk2CiAgIGNfbmxpbmsJNgog
ICBjX3JkZXYJNgkJb25seSB2YWxpZCBmb3IgY2hyIGFuZCBibGsgc3BlY2lhbCBmaWxlcwogICBj
X210aW1lCTExCiAgIGNfbmFtZXNpemUJNgkJY291bnQgaW5jbHVkZXMgdGVybWluYXRpbmcgTlVM
IGluIHBhdGhuYW1lCiAgIGNfZmlsZXNpemUJMTEJCW11c3QgYmUgMCBmb3IgRklGT3MgYW5kIGRp
cmVjdG9yaWVzICAqLwoKLyogVmFsdWUgZm9yIHRoZSBmaWVsZCBgY19tYWdpYycuICAqLwojZGVm
aW5lIE1BR0lDCSIwNzA3MDciCgovKiBWYWx1ZXMgZm9yIGNfbW9kZSwgT1InZCB0b2dldGhlcjog
Ki8KCiNkZWZpbmUgQ19JUlVTUgkJMDAwNDAwCiNkZWZpbmUgQ19JV1VTUgkJMDAwMjAwCiNkZWZp
bmUgQ19JWFVTUgkJMDAwMTAwCiNkZWZpbmUgQ19JUkdSUAkJMDAwMDQwCiNkZWZpbmUgQ19JV0dS
UAkJMDAwMDIwCiNkZWZpbmUgQ19JWEdSUAkJMDAwMDEwCiNkZWZpbmUgQ19JUk9USAkJMDAwMDA0
CiNkZWZpbmUgQ19JV09USAkJMDAwMDAyCiNkZWZpbmUgQ19JWE9USAkJMDAwMDAxCgojZGVmaW5l
IENfSVNVSUQJCTAwNDAwMAojZGVmaW5lIENfSVNHSUQJCTAwMjAwMAojZGVmaW5lIENfSVNWVFgJ
CTAwMTAwMAoKI2RlZmluZSBDX0lTQkxLCQkwNjAwMDAKI2RlZmluZSBDX0lTQ0hSCQkwMjAwMDAK
I2RlZmluZSBDX0lTRElSCQkwNDAwMDAKI2RlZmluZSBDX0lTRklGTwkwMTAwMDAKI2RlZmluZSBD
X0lTU09DSwkwMTQwMDAwCiNkZWZpbmUgQ19JU0xOSwkJMDEyMDAwMAojZGVmaW5lIENfSVNDVEcJ
CTAxMTAwMDAKI2RlZmluZSBDX0lTUkVHCQkwMTAwMDAwCgojZW5kaWYgLyogY3Bpby5oICovCg==
--e89a8f23596fe5eb2704caf04802
Content-Type: text/x-chdr; charset=US-ASCII; name="cpufreq.h"
Content-Disposition: attachment; filename="cpufreq.h"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7qjidf211

LyoKICogIGNwdWZyZXEuaCAtIGRlZmluaXRpb25zIGZvciBsaWJjcHVmcmVxCiAqCiAqICBDb3B5
cmlnaHQgKEMpIDIwMDQtMjAwOSAgRG9taW5payBCcm9kb3dza2kgPGxpbnV4QGRvbWluaWticm9k
b3dza2kuZGU+CiAqCiAqICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKiAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KICoKICogIFRo
aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAogKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCiAqCiAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiAgYWxvbmcgd2l0aCB0aGlzIHByb2dy
YW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogIEZvdW5kYXRpb24sIElu
Yy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBV
U0EKICovCgojaWZuZGVmIF9DUFVGUkVRX0gKI2RlZmluZSBfQ1BVRlJFUV9IIDEKCnN0cnVjdCBj
cHVmcmVxX3BvbGljeSB7Cgl1bnNpZ25lZCBsb25nIG1pbjsKCXVuc2lnbmVkIGxvbmcgbWF4OwoJ
Y2hhciAqZ292ZXJub3I7Cn07CgpzdHJ1Y3QgY3B1ZnJlcV9hdmFpbGFibGVfZ292ZXJub3JzIHsK
CWNoYXIgKmdvdmVybm9yOwoJc3RydWN0IGNwdWZyZXFfYXZhaWxhYmxlX2dvdmVybm9ycyAqbmV4
dDsKCXN0cnVjdCBjcHVmcmVxX2F2YWlsYWJsZV9nb3Zlcm5vcnMgKmZpcnN0Owp9OwoKc3RydWN0
IGNwdWZyZXFfYXZhaWxhYmxlX2ZyZXF1ZW5jaWVzIHsKCXVuc2lnbmVkIGxvbmcgZnJlcXVlbmN5
OwoJc3RydWN0IGNwdWZyZXFfYXZhaWxhYmxlX2ZyZXF1ZW5jaWVzICpuZXh0OwoJc3RydWN0IGNw
dWZyZXFfYXZhaWxhYmxlX2ZyZXF1ZW5jaWVzICpmaXJzdDsKfTsKCgpzdHJ1Y3QgY3B1ZnJlcV9h
ZmZlY3RlZF9jcHVzIHsKCXVuc2lnbmVkIGludCBjcHU7CglzdHJ1Y3QgY3B1ZnJlcV9hZmZlY3Rl
ZF9jcHVzICpuZXh0OwoJc3RydWN0IGNwdWZyZXFfYWZmZWN0ZWRfY3B1cyAqZmlyc3Q7Cn07Cgpz
dHJ1Y3QgY3B1ZnJlcV9zdGF0cyB7Cgl1bnNpZ25lZCBsb25nIGZyZXF1ZW5jeTsKCXVuc2lnbmVk
IGxvbmcgbG9uZyB0aW1lX2luX3N0YXRlOwoJc3RydWN0IGNwdWZyZXFfc3RhdHMgKm5leHQ7Cglz
dHJ1Y3QgY3B1ZnJlcV9zdGF0cyAqZmlyc3Q7Cn07CgoKCiNpZmRlZiBfX2NwbHVzcGx1cwpleHRl
cm4gIkMiIHsKI2VuZGlmCgovKgogKiByZXR1cm5zIDAgaWYgdGhlIHNwZWNpZmllZCBDUFUgaXMg
cHJlc2VudCAoaXQgZG9lc24ndCBzYXkKICogd2hldGhlciBpdCBpcyBvbmxpbmUhKSwgYW5kIGFu
IGVycm9yIHZhbHVlIGlmIG5vdC4KICovCgpleHRlcm4gaW50IGNwdWZyZXFfY3B1X2V4aXN0cyh1
bnNpZ25lZCBpbnQgY3B1KTsKCi8qIGRldGVybWluZSBjdXJyZW50IENQVSBmcmVxdWVuY3kKICog
LSBfa2VybmVsIHZhcmlhbnQgbWVhbnMga2VybmVsJ3Mgb3BpbmlvbiBvZiBDUFUgZnJlcXVlbmN5
CiAqIC0gX2hhcmR3YXJlIHZhcmlhbnQgbWVhbnMgYWN0dWFsIGhhcmR3YXJlIENQVSBmcmVxdWVu
Y3ksCiAqICAgIHdoaWNoIGlzIG9ubHkgYXZhaWxhYmxlIHRvIHJvb3QuCiAqCiAqIHJldHVybnMg
MCBvbiBmYWlsdXJlLCBlbHNlIGZyZXF1ZW5jeSBpbiBrSHouCiAqLwoKZXh0ZXJuIHVuc2lnbmVk
IGxvbmcgY3B1ZnJlcV9nZXRfZnJlcV9rZXJuZWwodW5zaWduZWQgaW50IGNwdSk7CgpleHRlcm4g
dW5zaWduZWQgbG9uZyBjcHVmcmVxX2dldF9mcmVxX2hhcmR3YXJlKHVuc2lnbmVkIGludCBjcHUp
OwoKI2RlZmluZSBjcHVmcmVxX2dldChjcHUpIGNwdWZyZXFfZ2V0X2ZyZXFfa2VybmVsKGNwdSk7
CgoKLyogZGV0ZXJtaW5lIENQVSB0cmFuc2l0aW9uIGxhdGVuY3kKICoKICogcmV0dXJucyAwIG9u
IGZhaWx1cmUsIGVsc2UgdHJhbnNpdGlvbiBsYXRlbmN5IGluIDEwXigtOSkgcyA9IG5hbm9zZWNv
bmRzCiAqLwpleHRlcm4gdW5zaWduZWQgbG9uZyBjcHVmcmVxX2dldF90cmFuc2l0aW9uX2xhdGVu
Y3kodW5zaWduZWQgaW50IGNwdSk7CgoKLyogZGV0ZXJtaW5lIGhhcmR3YXJlIENQVSBmcmVxdWVu
Y3kgbGltaXRzCiAqCiAqIFRoZXNlIG1heSBiZSBsaW1pdGVkIGZ1cnRoZXIgYnkgdGhlcm1hbCwg
ZW5lcmd5IG9yIG90aGVyCiAqIGNvbnNpZGVyYXRpb25zIGJ5IGNwdWZyZXEgcG9saWN5IG5vdGlm
aWVycyBpbiB0aGUga2VybmVsLgogKi8KCmV4dGVybiBpbnQgY3B1ZnJlcV9nZXRfaGFyZHdhcmVf
bGltaXRzKHVuc2lnbmVkIGludCBjcHUsCgkJCQl1bnNpZ25lZCBsb25nICptaW4sCgkJCQl1bnNp
Z25lZCBsb25nICptYXgpOwoKCi8qIGRldGVybWluZSBDUFVmcmVxIGRyaXZlciB1c2VkCiAqCiAq
IFJlbWVtYmVyIHRvIGNhbGwgY3B1ZnJlcV9wdXRfZHJpdmVyIHdoZW4gbm8gbG9uZ2VyIG5lZWRl
ZAogKiB0byBhdm9pZCBtZW1vcnkgbGVha2FnZSwgcGxlYXNlLgogKi8KCmV4dGVybiBjaGFyICpj
cHVmcmVxX2dldF9kcml2ZXIodW5zaWduZWQgaW50IGNwdSk7CgpleHRlcm4gdm9pZCBjcHVmcmVx
X3B1dF9kcml2ZXIoY2hhciAqcHRyKTsKCgovKiBkZXRlcm1pbmUgQ1BVZnJlcSBwb2xpY3kgY3Vy
cmVudGx5IHVzZWQKICoKICogUmVtZW1iZXIgdG8gY2FsbCBjcHVmcmVxX3B1dF9wb2xpY3kgd2hl
biBubyBsb25nZXIgbmVlZGVkCiAqIHRvIGF2b2lkIG1lbW9yeSBsZWFrYWdlLCBwbGVhc2UuCiAq
LwoKCmV4dGVybiBzdHJ1Y3QgY3B1ZnJlcV9wb2xpY3kgKmNwdWZyZXFfZ2V0X3BvbGljeSh1bnNp
Z25lZCBpbnQgY3B1KTsKCmV4dGVybiB2b2lkIGNwdWZyZXFfcHV0X3BvbGljeShzdHJ1Y3QgY3B1
ZnJlcV9wb2xpY3kgKnBvbGljeSk7CgoKLyogZGV0ZXJtaW5lIENQVWZyZXEgZ292ZXJub3JzIGN1
cnJlbnRseSBhdmFpbGFibGUKICoKICogbWF5IGJlIG1vZGlmaWVkIGJ5IG1vZHByb2JlJ2luZyBv
ciBybW1vZCdpbmcgb3RoZXIgZ292ZXJub3JzLiBQbGVhc2UKICogZnJlZSBhbGxvY2F0ZWQgbWVt
b3J5IGJ5IGNhbGxpbmcgY3B1ZnJlcV9wdXRfYXZhaWxhYmxlX2dvdmVybm9ycwogKiBhZnRlciB1
c2UuCiAqLwoKCmV4dGVybiBzdHJ1Y3QgY3B1ZnJlcV9hdmFpbGFibGVfZ292ZXJub3JzCipjcHVm
cmVxX2dldF9hdmFpbGFibGVfZ292ZXJub3JzKHVuc2lnbmVkIGludCBjcHUpOwoKZXh0ZXJuIHZv
aWQgY3B1ZnJlcV9wdXRfYXZhaWxhYmxlX2dvdmVybm9ycygKCXN0cnVjdCBjcHVmcmVxX2F2YWls
YWJsZV9nb3Zlcm5vcnMgKmZpcnN0KTsKCgovKiBkZXRlcm1pbmUgQ1BVIGZyZXF1ZW5jeSBzdGF0
ZXMgYXZhaWxhYmxlCiAqCiAqIE9ubHkgcHJlc2VudCBvbiBfc29tZV8gLT50YXJnZXQoKSBjcHVm
cmVxIGRyaXZlcnMuIEZvciBpbmZvcm1hdGlvbiBwdXJwb3NlcwogKiBvbmx5LiBQbGVhc2UgZnJl
ZSBhbGxvY2F0ZWQgbWVtb3J5IGJ5IGNhbGxpbmcKICogY3B1ZnJlcV9wdXRfYXZhaWxhYmxlX2Zy
ZXF1ZW5jaWVzIGFmdGVyIHVzZS4KICovCgpleHRlcm4gc3RydWN0IGNwdWZyZXFfYXZhaWxhYmxl
X2ZyZXF1ZW5jaWVzCipjcHVmcmVxX2dldF9hdmFpbGFibGVfZnJlcXVlbmNpZXModW5zaWduZWQg
aW50IGNwdSk7CgpleHRlcm4gdm9pZCBjcHVmcmVxX3B1dF9hdmFpbGFibGVfZnJlcXVlbmNpZXMo
CgkJc3RydWN0IGNwdWZyZXFfYXZhaWxhYmxlX2ZyZXF1ZW5jaWVzICpmaXJzdCk7CgoKLyogZGV0
ZXJtaW5lIGFmZmVjdGVkIENQVXMKICoKICogUmVtZW1iZXIgdG8gY2FsbCBjcHVmcmVxX3B1dF9h
ZmZlY3RlZF9jcHVzIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZAogKiB0byBhdm9pZCBtZW1vcnkgbGVh
a2FnZSwgcGxlYXNlLgogKi8KCmV4dGVybiBzdHJ1Y3QgY3B1ZnJlcV9hZmZlY3RlZF9jcHVzICpj
cHVmcmVxX2dldF9hZmZlY3RlZF9jcHVzKHVuc2lnbmVkCgkJCQkJCQlpbnQgY3B1KTsKCmV4dGVy
biB2b2lkIGNwdWZyZXFfcHV0X2FmZmVjdGVkX2NwdXMoc3RydWN0IGNwdWZyZXFfYWZmZWN0ZWRf
Y3B1cyAqZmlyc3QpOwoKCi8qIGRldGVybWluZSByZWxhdGVkIENQVXMKICoKICogUmVtZW1iZXIg
dG8gY2FsbCBjcHVmcmVxX3B1dF9yZWxhdGVkX2NwdXMgd2hlbiBubyBsb25nZXIgbmVlZGVkCiAq
IHRvIGF2b2lkIG1lbW9yeSBsZWFrYWdlLCBwbGVhc2UuCiAqLwoKZXh0ZXJuIHN0cnVjdCBjcHVm
cmVxX2FmZmVjdGVkX2NwdXMgKmNwdWZyZXFfZ2V0X3JlbGF0ZWRfY3B1cyh1bnNpZ25lZAoJCQkJ
CQkJaW50IGNwdSk7CgpleHRlcm4gdm9pZCBjcHVmcmVxX3B1dF9yZWxhdGVkX2NwdXMoc3RydWN0
IGNwdWZyZXFfYWZmZWN0ZWRfY3B1cyAqZmlyc3QpOwoKCi8qIGRldGVybWluZSBzdGF0cyBmb3Ig
Y3B1ZnJlcSBzdWJzeXN0ZW0KICoKICogVGhpcyBpcyBub3QgYXZhaWxhYmxlIGluIGFsbCBrZXJu
ZWwgdmVyc2lvbnMgb3IgY29uZmlndXJhdGlvbnMuCiAqLwoKZXh0ZXJuIHN0cnVjdCBjcHVmcmVx
X3N0YXRzICpjcHVmcmVxX2dldF9zdGF0cyh1bnNpZ25lZCBpbnQgY3B1LAoJCQkJCXVuc2lnbmVk
IGxvbmcgbG9uZyAqdG90YWxfdGltZSk7CgpleHRlcm4gdm9pZCBjcHVmcmVxX3B1dF9zdGF0cyhz
dHJ1Y3QgY3B1ZnJlcV9zdGF0cyAqc3RhdHMpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgY3B1ZnJl
cV9nZXRfdHJhbnNpdGlvbnModW5zaWduZWQgaW50IGNwdSk7CgoKLyogc2V0IG5ldyBjcHVmcmVx
IHBvbGljeQogKgogKiBUcmllcyB0byBzZXQgdGhlIHBhc3NlZCBwb2xpY3kgYXMgbmV3IHBvbGlj
eSBhcyBjbG9zZSBhcyBwb3NzaWJsZSwKICogYnV0IHJlc3VsdHMgbWF5IGRpZmZlciBkZXBlbmRp
bmcgZS5nLiBvbiBnb3Zlcm5vcnMgYmVpbmcgYXZhaWxhYmxlLgogKi8KCmV4dGVybiBpbnQgY3B1
ZnJlcV9zZXRfcG9saWN5KHVuc2lnbmVkIGludCBjcHUsIHN0cnVjdCBjcHVmcmVxX3BvbGljeSAq
cG9saWN5KTsKCgovKiBtb2RpZnkgYSBwb2xpY3kgYnkgb25seSBjaGFuZ2luZyBtaW4vbWF4IGZy
ZXEgb3IgZ292ZXJub3IKICoKICogRG9lcyBub3QgY2hlY2sgd2hldGhlciByZXN1bHQgaXMgd2hh
dCB3YXMgaW50ZW5kZWQuCiAqLwoKZXh0ZXJuIGludCBjcHVmcmVxX21vZGlmeV9wb2xpY3lfbWlu
KHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGxvbmcgbWluX2ZyZXEpOwpleHRlcm4gaW50IGNw
dWZyZXFfbW9kaWZ5X3BvbGljeV9tYXgodW5zaWduZWQgaW50IGNwdSwgdW5zaWduZWQgbG9uZyBt
YXhfZnJlcSk7CmV4dGVybiBpbnQgY3B1ZnJlcV9tb2RpZnlfcG9saWN5X2dvdmVybm9yKHVuc2ln
bmVkIGludCBjcHUsIGNoYXIgKmdvdmVybm9yKTsKCgovKiBzZXQgYSBzcGVjaWZpYyBmcmVxdWVu
Y3kKICoKICogRG9lcyBvbmx5IHdvcmsgaWYgdXNlcnNwYWNlIGdvdmVybm9yIGNhbiBiZSB1c2Vk
IGFuZCBubyBleHRlcm5hbAogKiBpbnRlcmZlcmVuY2UgKG90aGVyIGNhbGxzIHRvIHRoaXMgZnVu
Y3Rpb24gb3IgdG8gc2V0L21vZGlmeV9wb2xpY3kpCiAqIG9jY3Vycy4gQWxzbyBkb2VzIG5vdCB3
b3JrIG9uIC0+cmFuZ2UoKSBjcHVmcmVxIGRyaXZlcnMuCiAqLwoKZXh0ZXJuIGludCBjcHVmcmVx
X3NldF9mcmVxdWVuY3kodW5zaWduZWQgaW50IGNwdSwKCQkJCXVuc2lnbmVkIGxvbmcgdGFyZ2V0
X2ZyZXF1ZW5jeSk7CgojaWZkZWYgX19jcGx1c3BsdXMKfQojZW5kaWYKCiNlbmRpZiAvKiBfQ1BV
RlJFUV9IICovCg==
--e89a8f23596fe5eb2704caf04802
Content-Type: text/x-chdr; charset=US-ASCII; name="crypt.h"
Content-Disposition: attachment; filename="crypt.h"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7qjidf312

LyoKICogVUZDLWNyeXB0OiB1bHRyYSBmYXN0IGNyeXB0KDMpIGltcGxlbWVudGF0aW9uCiAqCiAq
IENvcHlyaWdodCAoQykgMTk5MSw5Miw5Myw5Niw5Nyw5OCwyMDAwLDIwMDQgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuCiAqCiAqIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9u
IDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KICoKICogVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNl
bnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy
ZWUKICogU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAz
MzAsIEJvc3RvbiwgTUEKICogMDIxMTEtMTMwNyBVU0EuCiAqCiAqIEAoIyljcnlwdC5oCTEuNSAx
Mi8yMC85NgogKgogKi8KCiNpZm5kZWYgX0NSWVBUX0gKI2RlZmluZSBfQ1JZUFRfSAkxCgojaW5j
bHVkZSA8ZmVhdHVyZXMuaD4KCl9fQkVHSU5fREVDTFMKCi8qIEVuY3J5cHQgYXQgbW9zdCA4IGNo
YXJhY3RlcnMgZnJvbSBLRVkgdXNpbmcgc2FsdCB0byBwZXJ0dXJiIERFUy4gICovCmV4dGVybiBj
aGFyICpjcnlwdCAoX19jb25zdCBjaGFyICpfX2tleSwgX19jb25zdCBjaGFyICpfX3NhbHQpCiAg
ICAgX19USFJPVyBfX25vbm51bGwgKCgxLCAyKSk7CgovKiBTZXR1cCBERVMgdGFibGVzIGFjY29y
ZGluZyBLRVkuICAqLwpleHRlcm4gdm9pZCBzZXRrZXkgKF9fY29uc3QgY2hhciAqX19rZXkpIF9f
VEhST1cgX19ub25udWxsICgoMSkpOwoKLyogRW5jcnlwdCBkYXRhIGluIEJMT0NLIGluIHBsYWNl
IGlmIEVERkxBRyBpcyB6ZXJvOyBvdGhlcndpc2UgZGVjcnlwdAogICBibG9jayBpbiBwbGFjZS4g
ICovCmV4dGVybiB2b2lkIGVuY3J5cHQgKGNoYXIgKl9fYmxvY2ssIGludCBfX2VkZmxhZykgX19U
SFJPVyBfX25vbm51bGwgKCgxKSk7CgojaWZkZWYgX19VU0VfR05VCi8qIFJlZW50cmFudCB2ZXJz
aW9ucyBvZiB0aGUgZnVuY3Rpb25zIGFib3ZlLiAgVGhlIGFkZGl0aW9uYWwgYXJndW1lbnQKICAg
cG9pbnRzIHRvIGEgc3RydWN0dXJlIHdoZXJlIHRoZSByZXN1bHRzIGFyZSBwbGFjZWQgaW4uICAq
LwpzdHJ1Y3QgY3J5cHRfZGF0YQogIHsKICAgIGNoYXIga2V5c2NoZWRbMTYgKiA4XTsKICAgIGNo
YXIgc2IwWzMyNzY4XTsKICAgIGNoYXIgc2IxWzMyNzY4XTsKICAgIGNoYXIgc2IyWzMyNzY4XTsK
ICAgIGNoYXIgc2IzWzMyNzY4XTsKICAgIC8qIGVuZC1vZi1hbGlnbWVudC1jcml0aWNhbC1kYXRh
ICovCiAgICBjaGFyIGNyeXB0XzNfYnVmWzE0XTsKICAgIGNoYXIgY3VycmVudF9zYWx0WzJdOwog
ICAgbG9uZyBpbnQgY3VycmVudF9zYWx0Yml0czsKICAgIGludCAgZGlyZWN0aW9uLCBpbml0aWFs
aXplZDsKICB9OwoKZXh0ZXJuIGNoYXIgKmNyeXB0X3IgKF9fY29uc3QgY2hhciAqX19rZXksIF9f
Y29uc3QgY2hhciAqX19zYWx0LAoJCSAgICAgIHN0cnVjdCBjcnlwdF9kYXRhICogX19yZXN0cmlj
dCBfX2RhdGEpCiAgICAgX19USFJPVyBfX25vbm51bGwgKCgxLCAyLCAzKSk7CgpleHRlcm4gdm9p
ZCBzZXRrZXlfciAoX19jb25zdCBjaGFyICpfX2tleSwKCQkgICAgICBzdHJ1Y3QgY3J5cHRfZGF0
YSAqIF9fcmVzdHJpY3QgX19kYXRhKQogICAgIF9fVEhST1cgX19ub25udWxsICgoMSwgMikpOwoK
ZXh0ZXJuIHZvaWQgZW5jcnlwdF9yIChjaGFyICpfX2Jsb2NrLCBpbnQgX19lZGZsYWcsCgkJICAg
ICAgIHN0cnVjdCBjcnlwdF9kYXRhICogX19yZXN0cmljdCBfX2RhdGEpCiAgICAgX19USFJPVyBf
X25vbm51bGwgKCgxLCAzKSk7CiNlbmRpZgoKX19FTkRfREVDTFMKCiNlbmRpZgkvKiBjcnlwdC5o
ICovCg==
--e89a8f23596fe5eb2704caf04802
Content-Type: text/x-chdr; charset=US-ASCII; name="ctype.h"
Content-Disposition: attachment; filename="ctype.h"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h7qjidf413

LyogQ29weXJpZ2h0IChDKSAxOTkxLDkyLDkzLDk1LDk2LDk3LDk4LDk5LDIwMDEsMjAwMiwyMDA0
LDIwMDcsMjAwOCwyMDA5LDIwMTEKCUZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KCiAgIFRoZSBHTlUgQyBMaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgogICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KCiAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3
cml0ZSB0byB0aGUgRnJlZQogICBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUg
UGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQQogICAwMjExMS0xMzA3IFVTQS4gICovCgovKgog
KglJU08gQzk5IFN0YW5kYXJkIDcuNDogQ2hhcmFjdGVyIGhhbmRsaW5nCTxjdHlwZS5oPgogKi8K
CiNpZm5kZWYJX0NUWVBFX0gKI2RlZmluZQlfQ1RZUEVfSAkxCgojaW5jbHVkZSA8ZmVhdHVyZXMu
aD4KI2luY2x1ZGUgPGJpdHMvdHlwZXMuaD4KCl9fQkVHSU5fREVDTFMKCiNpZm5kZWYgX0lTYml0
Ci8qIFRoZXNlIGFyZSBhbGwgdGhlIGNoYXJhY3RlcmlzdGljcyBvZiBjaGFyYWN0ZXJzLgogICBJ
ZiB0aGVyZSBnZXQgdG8gYmUgbW9yZSB0aGFuIDE2IGRpc3RpbmN0IGNoYXJhY3RlcmlzdGljcywK
ICAgbWFueSB0aGluZ3MgbXVzdCBiZSBjaGFuZ2VkIHRoYXQgdXNlIGB1bnNpZ25lZCBzaG9ydCBp
bnQncy4KCiAgIFRoZSBjaGFyYWN0ZXJpc3RpY3MgYXJlIHN0b3JlZCBhbHdheXMgaW4gbmV0d29y
ayBieXRlIG9yZGVyIChiaWcKICAgZW5kaWFuKS4gIFdlIGRlZmluZSB0aGUgYml0IHZhbHVlIGlu
dGVycHJldGF0aW9ucyBoZXJlIGRlcGVuZGVudCBvbiB0aGUKICAgbWFjaGluZSdzIGJ5dGUgb3Jk
ZXIuICAqLwoKIyBpbmNsdWRlIDxlbmRpYW4uaD4KIyBpZiBfX0JZVEVfT1JERVIgPT0gX19CSUdf
RU5ESUFOCiMgIGRlZmluZSBfSVNiaXQoYml0KQkoMSA8PCAoYml0KSkKIyBlbHNlIC8qIF9fQllU
RV9PUkRFUiA9PSBfX0xJVFRMRV9FTkRJQU4gKi8KIyAgZGVmaW5lIF9JU2JpdChiaXQpCSgoYml0
KSA8IDggPyAoKDEgPDwgKGJpdCkpIDw8IDgpIDogKCgxIDw8IChiaXQpKSA+PiA4KSkKIyBlbmRp
ZgoKZW51bQp7CiAgX0lTdXBwZXIgPSBfSVNiaXQgKDApLAkvKiBVUFBFUkNBU0UuICAqLwogIF9J
U2xvd2VyID0gX0lTYml0ICgxKSwJLyogbG93ZXJjYXNlLiAgKi8KICBfSVNhbHBoYSA9IF9JU2Jp
dCAoMiksCS8qIEFscGhhYmV0aWMuICAqLwogIF9JU2RpZ2l0ID0gX0lTYml0ICgzKSwJLyogTnVt
ZXJpYy4gICovCiAgX0lTeGRpZ2l0ID0gX0lTYml0ICg0KSwJLyogSGV4YWRlY2ltYWwgbnVtZXJp
Yy4gICovCiAgX0lTc3BhY2UgPSBfSVNiaXQgKDUpLAkvKiBXaGl0ZXNwYWNlLiAgKi8KICBfSVNw
cmludCA9IF9JU2JpdCAoNiksCS8qIFByaW50aW5nLiAgKi8KICBfSVNncmFwaCA9IF9JU2JpdCAo
NyksCS8qIEdyYXBoaWNhbC4gICovCiAgX0lTYmxhbmsgPSBfSVNiaXQgKDgpLAkvKiBCbGFuayAo
dXN1YWxseSBTUEMgYW5kIFRBQikuICAqLwogIF9JU2NudHJsID0gX0lTYml0ICg5KSwJLyogQ29u
dHJvbCBjaGFyYWN0ZXIuICAqLwogIF9JU3B1bmN0ID0gX0lTYml0ICgxMCksCS8qIFB1bmN0dWF0
aW9uLiAgKi8KICBfSVNhbG51bSA9IF9JU2JpdCAoMTEpCS8qIEFscGhhbnVtZXJpYy4gICovCn07
CiNlbmRpZiAvKiAhIF9JU2JpdCAgKi8KCi8qIFRoZXNlIGFyZSBkZWZpbmVkIGluIGN0eXBlLWlu
Zm8uYy4KICAgVGhlIGRlY2xhcmF0aW9ucyBoZXJlIG11c3QgbWF0Y2ggdGhvc2UgaW4gbG9jYWxl
aW5mby5oLgoKICAgSW4gdGhlIHRocmVhZC1zcGVjaWZpYyBsb2NhbGUgbW9kZWwgKHNlZSBgdXNl
bG9jYWxlJyBpbiA8bG9jYWxlLmg+KQogICB3ZSBjYW5ub3QgdXNlIGdsb2JhbCB2YXJpYWJsZXMg
Zm9yIHRoZXNlIGFzIHdhcyBkb25lIGluIHRoZSBwYXN0LgogICBJbnN0ZWFkLCB0aGUgZm9sbG93
aW5nIGFjY2Vzc29yIGZ1bmN0aW9ucyByZXR1cm4gdGhlIGFkZHJlc3Mgb2YKICAgZWFjaCB2YXJp
YWJsZSwgd2hpY2ggaXMgbG9jYWwgdG8gdGhlIGN1cnJlbnQgdGhyZWFkIGlmIG11bHRpdGhyZWFk
ZWQuCgogICBUaGVzZSBwb2ludCBpbnRvIGFycmF5cyBvZiAzODQsIHNvIHRoZXkgY2FuIGJlIGlu
ZGV4ZWQgYnkgYW55IGB1bnNpZ25lZAogICBjaGFyJyB2YWx1ZSBbMCwyNTVdOyBieSBFT0YgKC0x
KTsgb3IgYnkgYW55IGBzaWduZWQgY2hhcicgdmFsdWUKICAgWy0xMjgsLTEpLiAgSVNPIEMgcmVx
dWlyZXMgdGhhdCB0aGUgY3R5cGUgZnVuY3Rpb25zIHdvcmsgZm9yIGB1bnNpZ25lZAogICBjaGFy
JyB2YWx1ZXMgYW5kIGZvciBFT0Y7IHdlIGFsc28gc3VwcG9ydCBuZWdhdGl2ZSBgc2lnbmVkIGNo
YXInIHZhbHVlcwogICBmb3IgYnJva2VuIG9sZCBwcm9ncmFtcy4gIFRoZSBjYXNlIGNvbnZlcnNp
b24gYXJyYXlzIGFyZSBvZiBgaW50J3MKICAgcmF0aGVyIHRoYW4gYHVuc2lnbmVkIGNoYXIncyBi
ZWNhdXNlIHRvbG93ZXIgKEVPRikgbXVzdCBiZSBFT0YsIHdoaWNoCiAgIGRvZXNuJ3QgZml0IGlu
dG8gYW4gYHVuc2lnbmVkIGNoYXInLiAgQnV0IHRvZGF5IG1vcmUgaW1wb3J0YW50IGlzIHRoYXQK
ICAgdGhlIGFycmF5cyBhcmUgYWxzbyB1c2VkIGZvciBtdWx0aS1ieXRlIGNoYXJhY3RlciBzZXRz
LiAgKi8KZXh0ZXJuIF9fY29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICoqX19jdHlwZV9iX2xvYyAo
dm9pZCkKICAgICBfX1RIUk9XIF9fYXR0cmlidXRlX18gKChfX2NvbnN0KSk7CmV4dGVybiBfX2Nv
bnN0IF9faW50MzJfdCAqKl9fY3R5cGVfdG9sb3dlcl9sb2MgKHZvaWQpCiAgICAgX19USFJPVyBf
X2F0dHJpYnV0ZV9fICgoX19jb25zdCkpOwpleHRlcm4gX19jb25zdCBfX2ludDMyX3QgKipfX2N0
eXBlX3RvdXBwZXJfbG9jICh2b2lkKQogICAgIF9fVEhST1cgX19hdHRyaWJ1dGVfXyAoKF9fY29u
c3QpKTsKCgojaWZuZGVmIF9fY3BsdXNwbHVzCiMgZGVmaW5lIF9faXNjdHlwZShjLCB0eXBlKSBc
CiAgKCgqX19jdHlwZV9iX2xvYyAoKSlbKGludCkgKGMpXSAmICh1bnNpZ25lZCBzaG9ydCBpbnQp
IHR5cGUpCiNlbGlmIGRlZmluZWQgX19VU0VfRVhURVJOX0lOTElORVMKIyBkZWZpbmUgX19pc2N0
eXBlX2YodHlwZSkgXAogIF9fZXh0ZXJuX2lubGluZSBpbnQJCQkJCQkJICAgICAgXAogIGlzIyN0
eXBlIChpbnQgX19jKSBfX1RIUk9XCQkJCQkJICAgICAgXAogIHsJCQkJCQkJCQkgICAgICBcCiAg
ICByZXR1cm4gKCpfX2N0eXBlX2JfbG9jICgpKVsoaW50KSAoX19jKV0gJiAodW5zaWduZWQgc2hv
cnQgaW50KSBfSVMjI3R5cGU7IFwKICB9CiNlbmRpZgoKI2RlZmluZQlfX2lzYXNjaWkoYykJKCgo
YykgJiB+MHg3ZikgPT0gMCkJLyogSWYgQyBpcyBhIDcgYml0IHZhbHVlLiAgKi8KI2RlZmluZQlf
X3RvYXNjaWkoYykJKChjKSAmIDB4N2YpCQkvKiBNYXNrIG9mZiBoaWdoIGJpdHMuICAqLwoKI2Rl
ZmluZQlfX2V4Y3R5cGUobmFtZSkJZXh0ZXJuIGludCBuYW1lIChpbnQpIF9fVEhST1cKCl9fQkVH
SU5fTkFNRVNQQUNFX1NURAoKLyogVGhlIGZvbGxvd2luZyBuYW1lcyBhcmUgYWxsIGZ1bmN0aW9u
czoKICAgICBpbnQgaXNDSEFSQUNURVJJU1RJQyhpbnQgYyk7CiAgIHdoaWNoIHJldHVybiBub256
ZXJvIGlmZiBDIGhhcyBDSEFSQUNURVJJU1RJQy4KICAgRm9yIHRoZSBtZWFuaW5nIG9mIHRoZSBj
aGFyYWN0ZXJpc3RpYyBuYW1lcywgc2VlIHRoZSBgZW51bScgYWJvdmUuICAqLwpfX2V4Y3R5cGUg
KGlzYWxudW0pOwpfX2V4Y3R5cGUgKGlzYWxwaGEpOwpfX2V4Y3R5cGUgKGlzY250cmwpOwpfX2V4
Y3R5cGUgKGlzZGlnaXQpOwpfX2V4Y3R5cGUgKGlzbG93ZXIpOwpfX2V4Y3R5cGUgKGlzZ3JhcGgp
OwpfX2V4Y3R5cGUgKGlzcHJpbnQpOwpfX2V4Y3R5cGUgKGlzcHVuY3QpOwpfX2V4Y3R5cGUgKGlz
c3BhY2UpOwpfX2V4Y3R5cGUgKGlzdXBwZXIpOwpfX2V4Y3R5cGUgKGlzeGRpZ2l0KTsKCgovKiBS
ZXR1cm4gdGhlIGxvd2VyY2FzZSB2ZXJzaW9uIG9mIEMuICAqLwpleHRlcm4gaW50IHRvbG93ZXIg
KGludCBfX2MpIF9fVEhST1c7CgovKiBSZXR1cm4gdGhlIHVwcGVyY2FzZSB2ZXJzaW9uIG9mIEMu
ICAqLwpleHRlcm4gaW50IHRvdXBwZXIgKGludCBfX2MpIF9fVEhST1c7CgpfX0VORF9OQU1FU1BB
Q0VfU1RECgoKLyogSVNPIEM5OSBpbnRyb2R1Y2VkIG9uZSBuZXcgZnVuY3Rpb24uICAqLwojaWZk
ZWYJX19VU0VfSVNPQzk5Cl9fQkVHSU5fTkFNRVNQQUNFX0M5OQoKX19leGN0eXBlIChpc2JsYW5r
KTsKCl9fRU5EX05BTUVTUEFDRV9DOTkKI2VuZGlmCgojaWZkZWYgX19VU0VfR05VCi8qIFRlc3Qg
QyBmb3IgYSBzZXQgb2YgY2hhcmFjdGVyIGNsYXNzZXMgYWNjb3JkaW5nIHRvIE1BU0suICAqLwpl
eHRlcm4gaW50IGlzY3R5cGUgKGludCBfX2MsIGludCBfX21hc2spIF9fVEhST1c7CiNlbmRpZgoK
I2lmIGRlZmluZWQgX19VU0VfU1ZJRCB8fCBkZWZpbmVkIF9fVVNFX01JU0MgfHwgZGVmaW5lZCBf
X1VTRV9YT1BFTgoKLyogUmV0dXJuIG5vbnplcm8gaWZmIEMgaXMgaW4gdGhlIEFTQ0lJIHNldAog
ICAoaS5lLiwgaXMgbm8gbW9yZSB0aGFuIDcgYml0cyB3aWRlKS4gICovCmV4dGVybiBpbnQgaXNh
c2NpaSAoaW50IF9fYykgX19USFJPVzsKCi8qIFJldHVybiB0aGUgcGFydCBvZiBDIHRoYXQgaXMg
aW4gdGhlIEFTQ0lJIHNldAogICAoaS5lLiwgdGhlIGxvdy1vcmRlciA3IGJpdHMgb2YgQykuICAq
LwpleHRlcm4gaW50IHRvYXNjaWkgKGludCBfX2MpIF9fVEhST1c7CgovKiBUaGVzZSBhcmUgdGhl
IHNhbWUgYXMgYHRvdXBwZXInIGFuZCBgdG9sb3dlcicgZXhjZXB0IHRoYXQgdGhleSBkbyBub3QK
ICAgY2hlY2sgdGhlIGFyZ3VtZW50IGZvciBiZWluZyBpbiB0aGUgcmFuZ2Ugb2YgYSBgY2hhcicu
ICAqLwpfX2V4Y3R5cGUgKF90b3VwcGVyKTsKX19leGN0eXBlIChfdG9sb3dlcik7CiNlbmRpZiAv
KiBVc2UgU1ZJRCBvciB1c2UgbWlzYy4gICovCgovKiBUaGlzIGNvZGUgaXMgbmVlZGVkIGZvciB0
aGUgb3B0aW1pemVkIG1hcHBpbmcgZnVuY3Rpb25zLiAgKi8KI2RlZmluZSBfX3RvYm9keShjLCBm
LCBhLCBhcmdzKSBcCiAgKF9fZXh0ZW5zaW9uX18JCQkJCQkJICAgICAgXAogICAoeyBpbnQgX19y
ZXM7CQkJCQkJCSAgICAgIFwKICAgICAgaWYgKHNpemVvZiAoYykgPiAxKQkJCQkJCSAgICAgIFwK
CXsJCQkJCQkJCSAgICAgIFwKCSAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wIChjKSkJCQkJCSAg
ICAgIFwKCSAgICB7CQkJCQkJCQkgICAgICBcCgkgICAgICBpbnQgX19jID0gKGMpOwkJCQkJCSAg
ICAgIFwKCSAgICAgIF9fcmVzID0gX19jIDwgLTEyOCB8fCBfX2MgPiAyNTUgPyBfX2MgOiAoYSlb
X19jXTsJCSAgICAgIFwKCSAgICB9CQkJCQkJCQkgICAgICBcCgkgIGVsc2UJCQkJCQkJCSAgICAg
IFwKCSAgICBfX3JlcyA9IGYgYXJnczsJCQkJCQkgICAgICBcCgl9CQkJCQkJCQkgICAgICBcCiAg
ICAgIGVsc2UJCQkJCQkJCSAgICAgIFwKCV9fcmVzID0gKGEpWyhpbnQpIChjKV07CQkJCQkJICAg
ICAgXAogICAgICBfX3JlczsgfSkpCgojaWYgIWRlZmluZWQgX19OT19DVFlQRQojIGlmZGVmIF9f
aXNjdHlwZV9mCl9faXNjdHlwZV9mIChhbG51bSkKX19pc2N0eXBlX2YgKGFscGhhKQpfX2lzY3R5
cGVfZiAoY250cmwpCl9faXNjdHlwZV9mIChkaWdpdCkKX19pc2N0eXBlX2YgKGxvd2VyKQpfX2lz
Y3R5cGVfZiAoZ3JhcGgpCl9faXNjdHlwZV9mIChwcmludCkKX19pc2N0eXBlX2YgKHB1bmN0KQpf
X2lzY3R5cGVfZiAoc3BhY2UpCl9faXNjdHlwZV9mICh1cHBlcikKX19pc2N0eXBlX2YgKHhkaWdp
dCkKIyAgaWZkZWYgX19VU0VfSVNPQzk5Cl9faXNjdHlwZV9mIChibGFuaykKIyAgZW5kaWYKIyBl
bGlmIGRlZmluZWQgX19pc2N0eXBlCiMgZGVmaW5lIGlzYWxudW0oYykJX19pc2N0eXBlKChjKSwg
X0lTYWxudW0pCiMgZGVmaW5lIGlzYWxwaGEoYykJX19pc2N0eXBlKChjKSwgX0lTYWxwaGEpCiMg
ZGVmaW5lIGlzY250cmwoYykJX19pc2N0eXBlKChjKSwgX0lTY250cmwpCiMgZGVmaW5lIGlzZGln
aXQoYykJX19pc2N0eXBlKChjKSwgX0lTZGlnaXQpCiMgZGVmaW5lIGlzbG93ZXIoYykJX19pc2N0
eXBlKChjKSwgX0lTbG93ZXIpCiMgZGVmaW5lIGlzZ3JhcGgoYykJX19pc2N0eXBlKChjKSwgX0lT
Z3JhcGgpCiMgZGVmaW5lIGlzcHJpbnQoYykJX19pc2N0eXBlKChjKSwgX0lTcHJpbnQpCiMgZGVm
aW5lIGlzcHVuY3QoYykJX19pc2N0eXBlKChjKSwgX0lTcHVuY3QpCiMgZGVmaW5lIGlzc3BhY2Uo
YykJX19pc2N0eXBlKChjKSwgX0lTc3BhY2UpCiMgZGVmaW5lIGlzdXBwZXIoYykJX19pc2N0eXBl
KChjKSwgX0lTdXBwZXIpCiMgZGVmaW5lIGlzeGRpZ2l0KGMpCV9faXNjdHlwZSgoYyksIF9JU3hk
aWdpdCkKIyAgaWZkZWYgX19VU0VfSVNPQzk5CiMgICBkZWZpbmUgaXNibGFuayhjKQlfX2lzY3R5
cGUoKGMpLCBfSVNibGFuaykKIyAgZW5kaWYKIyBlbmRpZgoKIyBpZmRlZiBfX1VTRV9FWFRFUk5f
SU5MSU5FUwpfX2V4dGVybl9pbmxpbmUgaW50Cl9fTlRIICh0b2xvd2VyIChpbnQgX19jKSkKewog
IHJldHVybiBfX2MgPj0gLTEyOCAmJiBfX2MgPCAyNTYgPyAoKl9fY3R5cGVfdG9sb3dlcl9sb2Mg
KCkpW19fY10gOiBfX2M7Cn0KCl9fZXh0ZXJuX2lubGluZSBpbnQKX19OVEggKHRvdXBwZXIgKGlu
dCBfX2MpKQp7CiAgcmV0dXJuIF9fYyA+PSAtMTI4ICYmIF9fYyA8IDI1NiA/ICgqX19jdHlwZV90
b3VwcGVyX2xvYyAoKSlbX19jXSA6IF9fYzsKfQojIGVuZGlmCgojIGlmIF9fR05VQ19fID49IDIg
JiYgZGVmaW5lZCBfX09QVElNSVpFX18gJiYgIWRlZmluZWQgX19jcGx1c3BsdXMKIyAgZGVmaW5l
IHRvbG93ZXIoYykJX190b2JvZHkgKGMsIHRvbG93ZXIsICpfX2N0eXBlX3RvbG93ZXJfbG9jICgp
LCAoYykpCiMgIGRlZmluZSB0b3VwcGVyKGMpCV9fdG9ib2R5IChjLCB0b3VwcGVyLCAqX19jdHlw
ZV90b3VwcGVyX2xvYyAoKSwgKGMpKQojIGVuZGlmIC8qIE9wdGltaXppbmcgZ2NjICovCgojIGlm
IGRlZmluZWQgX19VU0VfU1ZJRCB8fCBkZWZpbmVkIF9fVVNFX01JU0MgfHwgZGVmaW5lZCBfX1VT
RV9YT1BFTgojICBkZWZpbmUgaXNhc2NpaShjKQlfX2lzYXNjaWkgKGMpCiMgIGRlZmluZSB0b2Fz
Y2lpKGMpCV9fdG9hc2NpaSAoYykKCiMgIGRlZmluZSBfdG9sb3dlcihjKQkoKGludCkgKCpfX2N0
eXBlX3RvbG93ZXJfbG9jICgpKVsoaW50KSAoYyldKQojICBkZWZpbmUgX3RvdXBwZXIoYykJKChp
bnQpICgqX19jdHlwZV90b3VwcGVyX2xvYyAoKSlbKGludCkgKGMpXSkKIyBlbmRpZgoKI2VuZGlm
IC8qIE5vdCBfX05PX0NUWVBFLiAgKi8KCgojaWZkZWYgX19VU0VfWE9QRU4ySzgKLyogVGhlIGNv
bmNlcHQgb2Ygb25lIHN0YXRpYyBsb2NhbGUgcGVyIGNhdGVnb3J5IGlzIG5vdCB2ZXJ5IHdlbGwK
ICAgdGhvdWdodCBvdXQuICBNYW55IGFwcGxpY2F0aW9ucyB3aWxsIG5lZWQgdG8gcHJvY2VzcyBp
dHMgZGF0YSB1c2luZwogICBpbmZvcm1hdGlvbiBmcm9tIHNldmVyYWwgZGlmZmVyZW50IGxvY2Fs
ZXMuICBBbm90aGVyIGFwcGxpY2F0aW9uIGlzCiAgIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUg
aW50ZXJuYXRpb25hbGl6YXRpb24gaGFuZGxpbmcgaW4gdGhlCiAgIHVwY29taW5nIElTTyBDKysg
c3RhbmRhcmQgbGlicmFyeS4gIFRvIHN1cHBvcnQgdGhpcyBhbm90aGVyIHNldCBvZgogICB0aGUg
ZnVuY3Rpb25zIHVzaW5nIGxvY2FsZSBkYXRhIGV4aXN0IHdoaWNoIGhhdmUgYW4gYWRkaXRpb25h
bAogICBhcmd1bWVudC4KCiAgIEF0dGVudGlvbjogYWxsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgKm5v
dCogc3RhbmRhcmRpemVkIGluIGFueSBmb3JtLgogICBUaGlzIGlzIGEgcHJvb2Ytb2YtY29uY2Vw
dCBpbXBsZW1lbnRhdGlvbi4gICovCgovKiBTdHJ1Y3R1cmUgZm9yIHJlZW50cmFudCBsb2NhbGUg
dXNpbmcgZnVuY3Rpb25zLiAgVGhpcyBpcyBhbgogICAoYWxtb3N0KSBvcGFxdWUgdHlwZSBmb3Ig
dGhlIHVzZXIgbGV2ZWwgcHJvZ3JhbXMuICAqLwojIGluY2x1ZGUgPHhsb2NhbGUuaD4KCi8qIFRo
ZXNlIGRlZmluaXRpb25zIGFyZSBzaW1pbGFyIHRvIHRoZSBvbmVzIGFib3ZlIGJ1dCBhbGwgZnVu
Y3Rpb25zCiAgIHRha2UgYXMgYW4gYXJndW1lbnQgYSBoYW5kbGUgZm9yIHRoZSBsb2NhbGUgd2hp
Y2ggc2hhbGwgYmUgdXNlZC4gICovCiMgIGRlZmluZSBfX2lzY3R5cGVfbChjLCB0eXBlLCBsb2Nh
bGUpIFwKICAoKGxvY2FsZSktPl9fY3R5cGVfYlsoaW50KSAoYyldICYgKHVuc2lnbmVkIHNob3J0
IGludCkgdHlwZSkKCiMgZGVmaW5lIF9fZXhjdHlwZV9sKG5hbWUpIAkJCQkJCSAgICAgIFwKICBl
eHRlcm4gaW50IG5hbWUgKGludCwgX19sb2NhbGVfdCkgX19USFJPVwoKLyogVGhlIGZvbGxvd2lu
ZyBuYW1lcyBhcmUgYWxsIGZ1bmN0aW9uczoKICAgICBpbnQgaXNDSEFSQUNURVJJU1RJQyhpbnQg
YywgbG9jYWxlX3QgKmxvY2FsZSk7CiAgIHdoaWNoIHJldHVybiBub256ZXJvIGlmZiBDIGhhcyBD
SEFSQUNURVJJU1RJQy4KICAgRm9yIHRoZSBtZWFuaW5nIG9mIHRoZSBjaGFyYWN0ZXJpc3RpYyBu
YW1lcywgc2VlIHRoZSBgZW51bScgYWJvdmUuICAqLwpfX2V4Y3R5cGVfbCAoaXNhbG51bV9sKTsK
X19leGN0eXBlX2wgKGlzYWxwaGFfbCk7Cl9fZXhjdHlwZV9sIChpc2NudHJsX2wpOwpfX2V4Y3R5
cGVfbCAoaXNkaWdpdF9sKTsKX19leGN0eXBlX2wgKGlzbG93ZXJfbCk7Cl9fZXhjdHlwZV9sIChp
c2dyYXBoX2wpOwpfX2V4Y3R5cGVfbCAoaXNwcmludF9sKTsKX19leGN0eXBlX2wgKGlzcHVuY3Rf
bCk7Cl9fZXhjdHlwZV9sIChpc3NwYWNlX2wpOwpfX2V4Y3R5cGVfbCAoaXN1cHBlcl9sKTsKX19l
eGN0eXBlX2wgKGlzeGRpZ2l0X2wpOwoKX19leGN0eXBlX2wgKGlzYmxhbmtfbCk7CgoKLyogUmV0
dXJuIHRoZSBsb3dlcmNhc2UgdmVyc2lvbiBvZiBDIGluIGxvY2FsZSBMLiAgKi8KZXh0ZXJuIGlu
dCBfX3RvbG93ZXJfbCAoaW50IF9fYywgX19sb2NhbGVfdCBfX2wpIF9fVEhST1c7CmV4dGVybiBp
bnQgdG9sb3dlcl9sIChpbnQgX19jLCBfX2xvY2FsZV90IF9fbCkgX19USFJPVzsKCi8qIFJldHVy
biB0aGUgdXBwZXJjYXNlIHZlcnNpb24gb2YgQy4gICovCmV4dGVybiBpbnQgX190b3VwcGVyX2wg
KGludCBfX2MsIF9fbG9jYWxlX3QgX19sKSBfX1RIUk9XOwpleHRlcm4gaW50IHRvdXBwZXJfbCAo
aW50IF9fYywgX19sb2NhbGVfdCBfX2wpIF9fVEhST1c7CgojIGlmIF9fR05VQ19fID49IDIgJiYg
ZGVmaW5lZCBfX09QVElNSVpFX18gJiYgIWRlZmluZWQgX19jcGx1c3BsdXMKIyAgZGVmaW5lIF9f
dG9sb3dlcl9sKGMsIGxvY2FsZSkgXAogIF9fdG9ib2R5IChjLCBfX3RvbG93ZXJfbCwgKGxvY2Fs
ZSktPl9fY3R5cGVfdG9sb3dlciwgKGMsIGxvY2FsZSkpCiMgIGRlZmluZSBfX3RvdXBwZXJfbChj
LCBsb2NhbGUpIFwKICBfX3RvYm9keSAoYywgX190b3VwcGVyX2wsIChsb2NhbGUpLT5fX2N0eXBl
X3RvdXBwZXIsIChjLCBsb2NhbGUpKQojICBkZWZpbmUgdG9sb3dlcl9sKGMsIGxvY2FsZSkJX190
b2xvd2VyX2wgKChjKSwgKGxvY2FsZSkpCiMgIGRlZmluZSB0b3VwcGVyX2woYywgbG9jYWxlKQlf
X3RvdXBwZXJfbCAoKGMpLCAobG9jYWxlKSkKIyBlbmRpZgkvKiBPcHRpbWl6aW5nIGdjYyAqLwoK
CiMgaWZuZGVmIF9fTk9fQ1RZUEUKIyAgZGVmaW5lIF9faXNhbG51bV9sKGMsbCkJX19pc2N0eXBl
X2woKGMpLCBfSVNhbG51bSwgKGwpKQojICBkZWZpbmUgX19pc2FscGhhX2woYyxsKQlfX2lzY3R5
cGVfbCgoYyksIF9JU2FscGhhLCAobCkpCiMgIGRlZmluZSBfX2lzY250cmxfbChjLGwpCV9faXNj
dHlwZV9sKChjKSwgX0lTY250cmwsIChsKSkKIyAgZGVmaW5lIF9faXNkaWdpdF9sKGMsbCkJX19p
c2N0eXBlX2woKGMpLCBfSVNkaWdpdCwgKGwpKQojICBkZWZpbmUgX19pc2xvd2VyX2woYyxsKQlf
X2lzY3R5cGVfbCgoYyksIF9JU2xvd2VyLCAobCkpCiMgIGRlZmluZSBfX2lzZ3JhcGhfbChjLGwp
CV9faXNjdHlwZV9sKChjKSwgX0lTZ3JhcGgsIChsKSkKIyAgZGVmaW5lIF9faXNwcmludF9sKGMs
bCkJX19pc2N0eXBlX2woKGMpLCBfSVNwcmludCwgKGwpKQojICBkZWZpbmUgX19pc3B1bmN0X2wo
YyxsKQlfX2lzY3R5cGVfbCgoYyksIF9JU3B1bmN0LCAobCkpCiMgIGRlZmluZSBfX2lzc3BhY2Vf
bChjLGwpCV9faXNjdHlwZV9sKChjKSwgX0lTc3BhY2UsIChsKSkKIyAgZGVmaW5lIF9faXN1cHBl
cl9sKGMsbCkJX19pc2N0eXBlX2woKGMpLCBfSVN1cHBlciwgKGwpKQojICBkZWZpbmUgX19pc3hk
aWdpdF9sKGMsbCkJX19pc2N0eXBlX2woKGMpLCBfSVN4ZGlnaXQsIChsKSkKCiMgIGRlZmluZSBf
X2lzYmxhbmtfbChjLGwpCV9faXNjdHlwZV9sKChjKSwgX0lTYmxhbmssIChsKSkKCiMgIGlmIGRl
ZmluZWQgX19VU0VfU1ZJRCB8fCBkZWZpbmVkIF9fVVNFX01JU0MKIyAgIGRlZmluZSBfX2lzYXNj
aWlfbChjLGwpCSgobCksIF9faXNhc2NpaSAoYykpCiMgICBkZWZpbmUgX190b2FzY2lpX2woYyxs
KQkoKGwpLCBfX3RvYXNjaWkgKGMpKQojICBlbmRpZgoKIyAgZGVmaW5lIGlzYWxudW1fbChjLGwp
CV9faXNhbG51bV9sICgoYyksIChsKSkKIyAgZGVmaW5lIGlzYWxwaGFfbChjLGwpCV9faXNhbHBo
YV9sICgoYyksIChsKSkKIyAgZGVmaW5lIGlzY250cmxfbChjLGwpCV9faXNjbnRybF9sICgoYyks
IChsKSkKIyAgZGVmaW5lIGlzZGlnaXRfbChjLGwpCV9faXNkaWdpdF9sICgoYyksIChsKSkKIyAg
ZGVmaW5lIGlzbG93ZXJfbChjLGwpCV9faXNsb3dlcl9sICgoYyksIChsKSkKIyAgZGVmaW5lIGlz
Z3JhcGhfbChjLGwpCV9faXNncmFwaF9sICgoYyksIChsKSkKIyAgZGVmaW5lIGlzcHJpbnRfbChj
LGwpCV9faXNwcmludF9sICgoYyksIChsKSkKIyAgZGVmaW5lIGlzcHVuY3RfbChjLGwpCV9faXNw
dW5jdF9sICgoYyksIChsKSkKIyAgZGVmaW5lIGlzc3BhY2VfbChjLGwpCV9faXNzcGFjZV9sICgo
YyksIChsKSkKIyAgZGVmaW5lIGlzdXBwZXJfbChjLGwpCV9faXN1cHBlcl9sICgoYyksIChsKSkK
IyAgZGVmaW5lIGlzeGRpZ2l0X2woYyxsKQlfX2lzeGRpZ2l0X2wgKChjKSwgKGwpKQoKIyAgZGVm
aW5lIGlzYmxhbmtfbChjLGwpCV9faXNibGFua19sICgoYyksIChsKSkKCiMgIGlmIGRlZmluZWQg
X19VU0VfU1ZJRCB8fCBkZWZpbmVkIF9fVVNFX01JU0MKIyAgIGRlZmluZSBpc2FzY2lpX2woYyxs
KQlfX2lzYXNjaWlfbCAoKGMpLCAobCkpCiMgICBkZWZpbmUgdG9hc2NpaV9sKGMsbCkJX190b2Fz
Y2lpX2wgKChjKSwgKGwpKQojICBlbmRpZgoKIyBlbmRpZiAvKiBOb3QgX19OT19DVFlQRS4gICov
CgojZW5kaWYgLyogVXNlIFBPU0lYIDIwMDguICAqLwoKX19FTkRfREVDTFMKCiNlbmRpZiAvKiBj
dHlwZS5oICAqLwo=
--e89a8f23596fe5eb2704caf04802--
